Odpowiedź re. jest poprawne, wtedy i tylko wtedy, gdy silnik pamięci masowej faktycznie obsługuje i wymusza ograniczenia klucza obcego.
Jeśli tabele są tworzone za pomocą Engine=MyISAM , to ani b. lub re. jest poprawne.
Jeśli tabele są tworzone za pomocą Engine=InnoDB , a następnie d. jest poprawne.
UWAGA:
Dotyczy to InnoDB wtedy i tylko wtedy, gdy FOREIGN_KEY_CHECKS = 1; jeśli FOREIGN_KEY_CHECKS = 0 , a następnie DELETE z tabeli nadrzędnej (foo) nie usuń wiersze z tabeli podrzędnej (foo2), które odwołują się do wiersza usuniętego z tabeli nadrzędnej.
Sprawdź to za pomocą danych wyjściowych z SHOW VARIABLES LIKE 'foreign_key_checks' (1=WŁ, 0=WYŁ)(Zwykłe ustawienie domyślne to WŁ.)
Dane wyjściowe z SHOW CREATE TABLE foo pokaże, którego silnika używa tabela.
Dane wyjściowe z SHOW VARIABLES LIKE 'storage_engine' pokaże domyślny silnik używany, gdy tworzona jest tabela, a silnik nie jest określony.