Odpověď d. je správné, pokud a pouze tehdy, když úložný modul skutečně podporuje a vynucuje omezení cizích klíčů.
Pokud jsou tabulky vytvořeny pomocí Engine=MyISAM
, pak ani b. nebo d. je správně.
Pokud jsou tabulky vytvořeny pomocí Engine=InnoDB
a poté d. je správně.
POZNÁMKA:
To platí pro InnoDB právě tehdy, když FOREIGN_KEY_CHECKS = 1
; pokud FOREIGN_KEY_CHECKS = 0
a poté DELETE
z nadřazené tabulky (foo) nebude odebrat řádky z podřízené tabulky (foo2), které odkazují na řádek odstraněný z nadřazené tabulky.
Ověřte to pomocí výstupu z SHOW VARIABLES LIKE 'foreign_key_checks'
(1=ZAPNUTO, 0=VYPNUTO) (Normální výchozí nastavení je ZAPNUTO.)
Výstup z SHOW CREATE TABLE foo
zobrazí, který motor tabulka používá.
Výstup z SHOW VARIABLES LIKE 'storage_engine'
zobrazí výchozí stroj použitý při vytvoření tabulky a stroj není specifikován.