phpMyAdmin
 sql >> Database >  >> Database Tools >> phpMyAdmin

Impostazione delle relazioni tra tabelle cosa fanno Cascade, Set Null e Restrict?

CASCADE propagherà la modifica quando cambia il genitore. (Se elimini una riga, verranno eliminate anche le righe nelle tabelle vincolate che fanno riferimento a quella riga, ecc.)

SET NULL imposta il valore della colonna su NULL quando una riga padre scompare.

RESTRICT fa fallire il tentativo di DELETE di una riga padre.

EDIT:non hai chiesto informazioni su di loro, ma lo standard SQL definisce altre due azioni:SET DEFAULT e NO ACTION . In MySQL, NO ACTION è equivalente a RESTRICT . (In alcuni DBMS, NO ACTION è un controllo differito, ma in MySQL tutti i controlli sono immediati.) Il parser MySQL accetta SET DEFAULT , ma entrambi i motori InnoDB e NDB rifiutano tali istruzioni, quindi SET DEFAULT in realtà non può essere utilizzato nemmeno per un ON UPDATE o ON DELETE vincolo.

Inoltre, nota che le azioni di chiave esterna a cascata non attivano i trigger in MySQL.