Svar d. er korrekt, hvis og kun hvis lagermotoren faktisk understøtter og håndhæver begrænsninger for fremmednøgle.
Hvis tabellerne er oprettet med Engine=MyISAM
, så hverken b. eller d. er korrekt.
Hvis tabellerne er oprettet med Engine=InnoDB
, derefter d. er korrekt.
BEMÆRK:
Dette gælder for InnoDB, hvis og kun hvis FOREIGN_KEY_CHECKS = 1
; hvis FOREIGN_KEY_CHECKS = 0
, derefter en DELETE
fra den overordnede tabel (foo) vil ikke fjern rækker fra den underordnede tabel (foo2), der refererer til en række, der er fjernet fra den overordnede tabel.
Bekræft dette med outputtet fra SHOW VARIABLES LIKE 'foreign_key_checks'
(1=TIL, 0=FRA)(Den normale standard er, at dette er TIL.)
Outputtet fra SHOW CREATE TABLE foo
vil vise hvilken motor tabellen bruger.
Outputtet fra SHOW VARIABLES LIKE 'storage_engine'
vil vise standardmotoren, der bruges, når en tabel oprettes, og motoren ikke er angivet.