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

Tabellenbeziehungen einrichten Was bewirken Cascade, Set Null und Restrict?

CASCADE wird die Änderung propagieren, wenn sich das übergeordnete Element ändert. (Wenn Sie eine Zeile löschen, werden Zeilen in eingeschränkten Tabellen, die auf diese Zeile verweisen, ebenfalls gelöscht usw.)

SET NULL setzt den Spaltenwert auf NULL, wenn eine übergeordnete Zeile verschwindet.

RESTRICT bewirkt, dass der DELETE-Versuch einer übergeordneten Zeile fehlschlägt.

EDIT:Sie haben nicht danach gefragt, aber der SQL-Standard definiert zwei andere Aktionen:SET DEFAULT und NO ACTION . In MySQL NO ACTION entspricht RESTRICT . (In einigen DBMSs ist NO ACTION ist eine verzögerte Prüfung, aber in MySQL erfolgen alle Prüfungen sofort.) Der MySQL-Parser akzeptiert SET DEFAULT , aber sowohl die InnoDB- als auch die NDB-Engine lehnen diese Anweisungen ab, also SET DEFAULT kann eigentlich nicht für ein ON UPDATE verwendet werden oder ON DELETE Einschränkung.

Beachten Sie auch, dass kaskadierende Fremdschlüsselaktionen keine Trigger in MySQL aktivieren.