Отговор d. е правилно, ако и само ако механизмът за съхранение действително поддържа и налага ограничения на външния ключ.
Ако таблиците са създадени с Engine=MyISAM
, тогава нито b. или г. е правилно.
Ако таблиците са създадени с Engine=InnoDB
, след това г. е правилно.
ЗАБЕЛЕЖКА:
Това е вярно за InnoDB, ако и само ако FOREIGN_KEY_CHECKS = 1
; ако FOREIGN_KEY_CHECKS = 0
, след това DELETE
от родителската таблица (foo) не премахнете редове от дъщерната таблица (foo2), които препращат към ред, премахнат от родителската таблица.
Проверете това с изхода от SHOW VARIABLES LIKE 'foreign_key_checks'
(1=ВКЛ., 0=ИЗКЛ.)(Нормалното подразбиране е това да е ВКЛЮЧЕНО.)
Резултатът от SHOW CREATE TABLE foo
ще покаже кой двигател използва таблицата.
Резултатът от SHOW VARIABLES LIKE 'storage_engine'
ще покаже двигателя по подразбиране, използван, когато е създадена таблица и машината не е посочена.