Autor Zpráva
Martin02
Profil
Ahoj,
mám v MySQL tabulku, jejíž data se zobrazují někde na stránce. Na té stránce se do ní data také vkládají. Potřebuju, aby v tabulce bylo vždycky max. 50 řádků, pokud jich tam bude víc (to se stane, jen když někdo přidá nový řádek přes onu stránku) má se smazat ten, který je v tabulce nejdelší dobu, resp. má největší ID.
Jak to udělat?

Děkuji
Casero
Profil
Martin02:
Můžeš to ošetřovat na té stránce, při vkládání nového záznamu (vložit, zkontrolovat počet, případně smazat). Další možnost je nechat to na MySQL, tzn. vytvořit si trigger.

který je v tabulce nejdelší dobu, resp. má největší ID.“ - nemělo by to být nejmenší ID?
Martin02
Profil
Ano, mělo to být nejmenší ID.
Chtěl jsem ale vědět konkrétně jak na to? Jak vytvořit kód, co smaže řádek s nejmenším ID.
Casero
Profil
Martin02:
Jak vytvořit kód, co smaže řádek s nejmenším ID.
delete from tabulka order by id limit 1

Nebo vložíš řádek a provedeš delete všech záznamů nad 50 takto:
delete from tabulka where id in (select id from (select id from tabulka order by id desc limit 50,9999999) x)

Nelze použít přímo "delete from tabulka order by id desc limit 50,9999999", protože MySQL u limitu příkazu delete neumožňuje offset.
A řešení "delete from tabulka where id in (select id from tabulka order by id desc limit 50,9999999) není možné, protože MySQL zde nepodporuje LIMIT.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: