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

Att ställa in tabellrelationer vad gör Cascade, Set Null och Restrict?

CASCADE kommer att sprida förändringen när föräldern ändras. (Om du tar bort en rad kommer rader i begränsade tabeller som refererar till den raden också att tas bort, etc.)

SET NULL ställer in kolumnvärdet till NULL när en överordnad rad försvinner.

RESTRICT gör att försöket att radera en överordnad rad misslyckas.

EDIT:Du frågade inte om dem, men SQL-standarden definierar två andra åtgärder:SET DEFAULT och NO ACTION . I MySQL, NO ACTION motsvarar RESTRICT . (I vissa DBMS, NO ACTION är en uppskjuten kontroll, men i MySQL är alla kontroller omedelbara.) MySQL-parsern accepterar SET DEFAULT , men både InnoDB- och NDB-motorerna avvisar dessa påståenden, så SET DEFAULT kan faktiskt inte användas för antingen en ON UPDATE eller ON DELETE begränsning.

Observera också att kaskadande främmande nyckelåtgärder inte aktiverar utlösare i MySQL.



  1. MySQL Tidsstämpel - varför alla nollor?

  2. Hur visar jag körda frågor i SQL Server Management Studio?

  3. Generera CSV baserat på MySQL-fråga från phpMyAdmin

  4. phpmyadmin-fel #1062 - Dubblettpost '1' för nyckel 1