ID smazanych radku
9 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
sql: DELETE FROM tabulka WHERE chcismazat=1 Tak a jak ted zjistim idcka radku ktery byli smazany? idcka sou primary_key a maj auto_increment. Neco podobnyho dela funkce "mysql_insert_id". Ta vraci idcka u insertu. Potreboval bych neco jako "mysql_deleted_id". Zatim sem to vyresil tim ze nejdriv udelam select idcek kde chcismazat=1 a pak ty idcka projedu cyklem a vsechny je smazu ale presto na tohle musi bejt nejaka fce nebo je to docela chyba ze jeste neexistuje.
-
Na co potřebuješ ID smazaného řádku? chápal bych to možná v triggeru, kde chceš id mazaného řádku, ale to obvykle bývá vyřešené. Nevím jak je to v MySQL, znám to odjinud. Nic méně, k čemu potřebuješ ID smazaného řádku? Opravdu mi to není jasné.
-
Do logu. Opravuju jednu tabulku ktera ma cca 100.000 radku a jestli neco po***u tak me vyhodej z prace pac tam sou dost dulezity osobni udaje. Takze v pripade ze se neco pokazi nahraju prislusnej radek ze zalohy. :-)
-
myslim že funkce na to neni. nevim jestli je nějak možnýd dělat automaticky log změn v dfatabázi. já bych tohle dělal tak, že bych z toho selectu zjistil ty id těch článků, a pak je smazal všechny najednou tim prikazem cos napsal jako prvni.
-
Aha ... tak do práce. Hmm... by mě zajímalo kde děláš ;) V lepších firmách se to dost úspěšně řeší paralelními databázemi a jejich porovnáváním.
-
paralelní db jsou náročné. Jednodušší je udělat to buď tak, že to napřed zapíšeš do logu a pak smažeš, jak psal RUR, nebo se tvoří auditní tabulky, kam se data strčí a pak se z původní tabulky smažou. A to buď storkou nebo triggerem, vyjde to nastejno, je to na tom, jak se to komu líbí.
-
MzM: nebudeme zakládat další falme, ale jenom pro tvou informaci: já dělám s paralerními databázemi (jedna přímo na HTTP serveru, druhá samostaně) a nějak nevidím, že by byla náročná. Velikostně se pohybuju v řádech GB a v milónech řádků a ještě se mi nikdy nestalo, že bych jakkoliv přišel o jediný řádek (zezačátku byly problémy se softwarem, a zabezpečením, potom párkrát odešel ten či onen disk ale zatím mám všechno). Záleží na šikovnosti ;) Jo sorry, špatně jsem se vyjádřil s paralerními SQL servery.
-
Nechci vam brat iluze, ale ve firmach se na nejakej par smazanejch radku kasle. Obcas se proste neco pokazi, omluvi se uzivatelum a zivot de dal :-D (jednou sem omylem odeslal 200 uzivatum nesmyslnej email :))) ) Aspon takhle to chodi v mensich firmach. V tomhle pripade internetovej obchod (nejvetsi tabulka ma jen 350.000 radku). Jinak ten script co sem potreboval sem uz napsal, pouzil a smazal. Vyresil sem to selectem kterej vybral idcka ktery se smazou, ulozil je a pak byl jeden velikej DELETE FROM tabulka WHERE ID IN(...) Ale stejne me nastvali ze takova funkce neexistuje...
-
Tom a ostatní, omlouvám se za dezinformaci, měl jsem napsat, že se mi zdají být paralelní db náročné. Nemyslím, že by to bylo pomalé, ale musí pořizovat další stroj/licence a pod.... Ale, pravda, zkušenosti s tím nemám. Kriss, pamatuju si na firebird, kde se v triggeru dalo napsat select * from deleted, kde deleted představovalo dataset ze smazaných řádků tabulky u které byl ten trigger. Koukám v mssql je to to samé.