Sziasztok,
egy olyan problémával szembesültem, hogy van egy néhány millió rekordos DB, amiből visszamenőleg törölni kellene (6 évnyi adatot) lehetőleg az integritás megtartásával. Mivel a DB maga idegen kulcsokkal és megfelelő kapcsolatokkal lett felépítve, így ezekre tudnék támaszkodni.
Nincs beállítva sehol sem cascade delete (szándékosan, az eredeti DB-ből kézlevágás mellett lehetne törölgetni csak), így a törlés az integritás megőrzésével maximum táblánként lehetséges, ami egy elég hosszadalmas folyamat lenne.
Egy táblában van a főadat, ott megfelelően vannak mentve a timestamp-ek, és az ezekhez kapcsolódó rekordokat (amit ez fog) kellene eldobni, illetve azokat amit már nem fog semmi (ugyan a DB így lett felépítve, de előfordulhatnak benne esetlegesen korai inkonzisztens adatok).
Gondoltam olyan joinos megoldásokra, ahol a másik oldal null azokat a sorokat eldobom, de ez enyhén szólva is macerás első nekifutásra (de ez marad, ha nincs más, mert ez is relatíve kevés melóval megoldható).
Kb. 10-15 egymáshoz kapcsolódó táblából törölni kellene a hozzá tartozó dolgokat, így ez egy jópár órás feladat lenne.
A kérdésem: Van-e olyan módszer amivel csak az "árva" adatokat dobjuk el, amit nem fog semmilyen idegen kulcs?
Előre is köszi az ötleteket!
- 1615 megtekintés
Hozzászólások
gugli://mysql delete rows with no fk
1. találat: http://stackoverflow.com/questions/6978304/delete-all-where-mysql-forei…
1. válasz: DELETE IGNORE ...
Ez eddig 1 perc utánanézés volt.
Aztán a fene tudja hogy működik-e, sose próbáltam, backup azért legyen előtte.
De a left join-os téma se olyan sárkányos 10-15 táblánál, ha ismered az adatbázist.
- A hozzászóláshoz be kell jelentkezni
Erm, köszi!
(ezek szerint sikerült a legfavágóbb kulcsszavakat találnom, pont nem ebbe az irányba indultam el...)
Mindjárt meg is kóstolom, mert jónak tűnik.
- A hozzászóláshoz be kell jelentkezni