Answer d. is correct, if and only if the storage engine actually supports and enforces foreign key constraints.
If the tables are created with Engine=MyISAM
, then neither b. or d. is correct.
If the tables are created with Engine=InnoDB
, then d. is correct.
NOTE:
This is true for InnoDB if and only if FOREIGN_KEY_CHECKS = 1
; if FOREIGN_KEY_CHECKS = 0
, then a DELETE
from the parent table (foo) will not remove rows from the child table (foo2) that reference a row removed from the parent table.
Verify this with the output from SHOW VARIABLES LIKE 'foreign_key_checks'
(1=ON, 0=OFF)
(The normal default is for this to be ON.)
The output from SHOW CREATE TABLE foo
will show which engine the table uses.
The output from SHOW VARIABLES LIKE 'storage_engine'
will show the default engine used when a table is created and the engine is not specified.