Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL su eliminazione a cascata. Esempio di prova

Risposta d. è corretto, se e solo se il motore di archiviazione supporta e applica effettivamente vincoli di chiave esterna.

Se le tabelle vengono create con Engine=MyISAM , quindi nemmeno b. o d. è corretto.

Se le tabelle vengono create con Engine=InnoDB , quindi d. è corretto.

NOTA:

Questo vale per InnoDB se e solo se FOREIGN_KEY_CHECKS = 1; se FOREIGN_KEY_CHECKS = 0 , quindi un DELETE dalla tabella padre (foo) non rimuovi le righe dalla tabella figlio (foo2) che fanno riferimento a una riga rimossa dalla tabella padre.

Verificalo con l'output di SHOW VARIABLES LIKE 'foreign_key_checks' (1=ON, 0=OFF)(L'impostazione predefinita normale è che sia ON.)

L'output da SHOW CREATE TABLE foo mostrerà quale motore utilizza la tabella.

L'output da SHOW VARIABLES LIKE 'storage_engine' mostrerà il motore predefinito utilizzato quando viene creata una tabella e il motore non è specificato.