Non uso mai eliminazioni a cascata. Perché? Perché è troppo facile fare un errore. Molto più sicuro di richiedere applicazioni client per esplicitamente eliminare (e soddisfare le condizioni per l'eliminazione, come ad esempio l'eliminazione di FK cui record.)
In realtà, le eliminazioni di per sé può essere evitato segnando record come cancellati o si spostano in tabelle di archivio/storia.
Nel caso di marcatura record come cancellati, esso dipende la proporzione relativa dei contrassegnato come dati cancellati, poiché SELECT
s dovranno filtrare 'isDeleted = false
' un indice sarà usato solo se meno del 10% (approssimativamente, a seconda dell'RDBMS) dei record sono contrassegnati come cancellati.
Quale di questi 2 scenari si preferisce:
1) sviluppatore viene a voi, dice: "Ehi, questo elimina non funzionerà". Entrambi la esaminano e scoprono che sta cercando accidentalmente di cancellare l'intero contenuto della tabella. Entrambi ridete e tornate a quello che stavate facendo.
2) Lo sviluppatore viene da te e chiede timidamente "Abbiamo dei backup?"
fonte
2010-02-05 03:16:23
Possibile duplicato di [Quando/Perché utilizzare Cascading in SQL Server?] (Http://stackoverflow.com/questions/59297/when-why-to-use-cascading-in-sql-server). Inoltre, tendo a concordare molto di più con le risposte dell'altra domanda, che sono molto diverse da quelle qui. –