sql >> Database >  >> RDS >> Mysql

MySQL op verwijder cascade. Testvoorbeeld

Antwoord d. correct is, als en alleen als de opslagengine daadwerkelijk beperkingen voor externe sleutels ondersteunt en afdwingt.

Als de tabellen zijn gemaakt met Engine=MyISAM , dan geen van beide b. of d. klopt.

Als de tabellen zijn gemaakt met Engine=InnoDB , dan d. klopt.

OPMERKING:

Dit geldt voor InnoDB als en alleen als FOREIGN_KEY_CHECKS = 1; if FOREIGN_KEY_CHECKS = 0 , dan een DELETE van de bovenliggende tabel (foo) zal niet verwijder rijen uit de onderliggende tabel (foo2) die verwijzen naar een rij die uit de bovenliggende tabel is verwijderd.

Controleer dit met de uitvoer van SHOW VARIABLES LIKE 'foreign_key_checks' (1=AAN, 0=UIT)(De normale standaard is dat dit AAN staat.)

De uitvoer van SHOW CREATE TABLE foo laat zien welke engine de tabel gebruikt.

De uitvoer van SHOW VARIABLES LIKE 'storage_engine' toont de standaard engine die wordt gebruikt wanneer een tabel wordt gemaakt en de engine is niet gespecificeerd.



  1. ERROR 1064 (42000):U heeft een fout in uw SQL-syntaxis; controleer de handleiding die overeenkomt met uw MySQL-serverversie voor de juiste syntaxis om te gebruiken

  2. Gebruik meerdere kolommen als unieke identifier voor mysql

  3. Fout 1033 ontvangen inloggen op de standby

  4. RMySQL-systeemfout:10060