ugrás a tartalomhoz

elsődleges kulcsok és a konzisztencia

connor · 2011. Okt. 11. (K), 17.06
Sziasztok,

Bedobom a közösbe a problémámat, hátha...

Témák, hozzászólások struktúrájának építésekor belefutottam egy "integrity constraint violation" hibába.
A témák felől közelítve One to Many struktúrának megfelel a témák-hozzászólások kapcsolat, a hozzászólások felől Many to One.
A probléma az, hogy a témák táblán lefuttatott truncate nem törli a hozzászólásokat, de a témát sem, a hozzászólásokban lévő hivatkozó kulcsok miatt. Trigger nem játszik, mert a truncate-kor az before delete trigger nem fut le. A hozzászólás hivatkozik a témára, így csak hozzászólásnál tudnám beállítani az onDelete CASCADE opciót, de annak meg azért nem lenne értelme, mert nem a hozzászólást akarom törölni, hanem a témát.

Elméletileg nem világrengető a probléma, csak eddig nem foglalkoztam szigorúan konzisztens adatbázisok építésével.

Ha tud valaki könyvet, doksit, akármit ami segíthet a probléma megoldásában, ne tartsa magában! Köszi!


ui: mysql adatbázis innodb driverrel.
ui2: doctrine2-t és symfony2-t használ a project és a doctrine:fixtures:load --append nélkül kiüríti az adatbázist mielőtt újra betölti. a probléma ezen a ponton van.
 
1

a hiba megoldása mégis csak

connor · 2011. Okt. 11. (K), 17.28
a hiba megoldása mégis csak az onDelete="CASCADE", a comment object (tábla) $topic mezőjén.

Következőkben szembejött egy $lastComment hivatkozási hiba. Erre betettem egy onDelete="SET NULL"-t ami mondjuk nem a legjobb megoldás, de mivel truncate miatt került be, így nem lesz inkonzisztens az adatbázis. Sor törlésnél meg majd triggert futtatok.
De ezzel a megoldással előjött egy misztikus "General error: 1030 Got error -1 from storage engine" error. -.-"