Svar d. är korrekt, om och bara om lagringsmotorn faktiskt stöder och upprätthåller begränsningar för främmande nyckel.
Om tabellerna skapas med Engine=MyISAM
, då varken b. eller d. är korrekt.
Om tabellerna skapas med Engine=InnoDB
, sedan d. är korrekt.
OBS:
Detta gäller för InnoDB om och endast om FOREIGN_KEY_CHECKS = 1
; om FOREIGN_KEY_CHECKS = 0
, sedan en DELETE
från den överordnade tabellen (foo) kommer inte ta bort rader från den underordnade tabellen (foo2) som refererar till en rad borttagen från den överordnade tabellen.
Verifiera detta med utdata från SHOW VARIABLES LIKE 'foreign_key_checks'
(1=PÅ, 0=AV)(Normal standard är att detta är PÅ.)
Utdata från SHOW CREATE TABLE foo
kommer att visa vilken motor tabellen använder.
Utdata från SHOW VARIABLES LIKE 'storage_engine'
kommer att visa standardmotorn som används när en tabell skapas och motorn inte är specificerad.