Resposta D. está correto, se e somente se o mecanismo de armazenamento realmente suporta e impõe restrições de chave estrangeira.
Se as tabelas forem criadas com
Engine=MyISAM
, então nem b. ou D. está correto. Se as tabelas forem criadas com
Engine=InnoDB
, então d. está correto. NOTA:
Isso é verdade para InnoDB se e somente se
FOREIGN_KEY_CHECKS = 1
; se FOREIGN_KEY_CHECKS = 0
, então um DELETE
da tabela pai (foo) não remova as linhas da tabela filha (foo2) que fazem referência a uma linha removida da tabela pai. Verifique isso com a saída de
SHOW VARIABLES LIKE 'foreign_key_checks'
(1=ON, 0=OFF)(O padrão normal é que seja ON.) A saída de
SHOW CREATE TABLE foo
mostrará qual mecanismo a tabela usa. A saída de
SHOW VARIABLES LIKE 'storage_engine'
mostrará o mecanismo padrão usado quando uma tabela é criada e o mecanismo não é especificado.