Originariamente inviato da Veronica80
Salve a tutti! Vi riporto un problemone che ho riscontrato qualche giorno fa...
Ho sviluppato un sito che si aggancia a un DB MySQL. Tra i vari moduli ce n'è uno strutturato come da immagine:
Avendo sviluppato in locale il tutto le 3 tabelle son collegate da varie foreign_key (quindi se cancello un disco automaticamente vengono cancellate tutte le tracce e a cascata le relazioni tra traccia e autore).
Idem se cancello la traccia (vengono cancellate le relazioni con gli autori di quella traccia) ecc ecc
Tutto bello automatizzato grazie al motore InnoDB di MySQL che consente di usare le Foreign_key...
Carico tutto online sullo spazio web, eseguo il dump sul DB online fornitomi dal mio provider (di cui non faccio il nome ma è il più famoso in italia credo...almeno come fama...inizia per A :P) e scopro che i furbetti non mettono a disposizione InnoDB come motore ma MyISAM....il quale non supporta le foreign_key (ovviamente si son visti bene dallo specificare questa GRAVISSIMA carenza in fase di attivazione del servizio ma vabbè...)
Ora mi trovo a gestire l'eliminazione dei records a mano con PHP..
Mi scuso se mi son dilungata ma volevo rendere bene il quadro della situazione...
La domanda è questa:
Come posso muovermi per essere sicura che non rimangano record spezzati volanti?
Es:
- Cancello Un disco
- Il disco viene cancellato dalla tab dischi quindi procedo a cancellare le tracce del disco (uso una IF)
- qualcosa va storto nella connessione, o sul server ecc lo script va in DIE e si blocca
- Mi ritrovo senza disco nella tab dischi ma con le tracce e le relazioni associate a quel disco
Ho pensato di agire al contrario (eliminare prima le relazioni, poi le tracce, poi il disco) ma il problema resta.
Esiste un modo per esser sicura che venga eliminato tutto? O di eliminare tutto in una volta?
Io temo di no....
Mi rimetto a voi esperti!
Grazie a tutti!