Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL auf Löschkaskade. Testbeispiel

Antwort d. ist korrekt, wenn und nur wenn die Speicher-Engine tatsächlich Fremdschlüssel-Einschränkungen unterstützt und erzwingt.

Wenn die Tabellen mit Engine=MyISAM erstellt werden , dann weder b. oder d. ist richtig.

Wenn die Tabellen mit Engine=InnoDB erstellt werden , dann d. ist richtig.

HINWEIS:

Dies gilt für InnoDB genau dann, wenn FOREIGN_KEY_CHECKS = 1; wenn FOREIGN_KEY_CHECKS = 0 , dann ein DELETE aus der übergeordneten Tabelle (foo) nicht Zeilen aus der untergeordneten Tabelle (foo2) entfernen, die auf eine Zeile verweisen, die aus der übergeordneten Tabelle entfernt wurde.

Überprüfen Sie dies mit der Ausgabe von SHOW VARIABLES LIKE 'foreign_key_checks' (1=EIN, 0=AUS)(Normalerweise ist dies standardmäßig EIN.)

Die Ausgabe von SHOW CREATE TABLE foo zeigt an, welche Engine die Tabelle verwendet.

Die Ausgabe von SHOW VARIABLES LIKE 'storage_engine' zeigt die Standard-Engine, die verwendet wird, wenn eine Tabelle erstellt wird und die Engine nicht angegeben ist.