Salve. Qualcuno può dirmi qual è la differenza tra NO ACTION e RESTRICT quando specifico cosa fare al momento della cancellazione o aggiornamento di un record padre?
Salve. Qualcuno può dirmi qual è la differenza tra NO ACTION e RESTRICT quando specifico cosa fare al momento della cancellazione o aggiornamento di un record padre?
banalmente:Originariamente inviato da Dreamer89
Salve. Qualcuno può dirmi qual è la differenza tra NO ACTION e RESTRICT quando specifico cosa fare al momento della cancellazione o aggiornamento di un record padre?
NO ACTION non controlla la corrispondenza del reference ed esegue quanto chiesto cioe' non controlla la relazione tra padre e figlio.
RESTRICT invece fa questo controllo di congruenza e impedisce di modificare la relazione.
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
Non mi è chiara la cosa... avrei bisogno di un esempio:
Ho una tabella "Libri" che è figlia della tabella "Editori":
Tabella con NO ACTION:
e tabella con RESTRICTcodice:CREATE TABLE Libri ( idLibro INT, idEditore INT, ... PRIMARY KEY(idLibro), FOREIGN KEY(idLibro) REFERENCES Editori(idEditore) ON DELETE NO ACTION )
Cosa succede se un elemento padre della tabella Editori viene eliminato nei due casi?codice:CREATE TABLE Libri ( idLibro INT, idEditore INT, ... PRIMARY KEY(idLibro), FOREIGN KEY(idLibro) REFERENCES Editori(idEditore) ON DELETE RESTRICT )
nel primo caso NO ACTION accetterebbe passivamente che tu rimuova l'editore associato al libro.
nel secondo caso siccome il libro ha un riferimento con un editore, non ti verrebbe permesso di rimuovere l'editore se non rimuovi prima il libro.
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
scusate se mi intrometto, quindi con la clausola RESTRICT andrebbero rimossi prima tutti i libri, giusto?
libri / editori / libri /editori ... diciamo per capirci meglio: id_padre e id_figlio.Originariamente inviato da smn
scusate se mi intrometto, quindi con la clausola RESTRICT andrebbero rimossi prima tutti i libri, giusto?
non puoi eliminare un id_padre se esiste ancora un id_figlio associato all'id_padre da rimuovere. Integrita' referenziale.
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
Ok grazie mille ^^