sql >> Databasteknik >  >> RDS >> Mysql

Kan jag skjuta upp referensintegritetskontroller i MySQL tills commit

Mitt svar verkar vara här ...

Liksom MySQL i allmänhet, i en SQL-sats som infogar, tar bort eller uppdaterar många rader, kontrollerar InnoDB UNIKA och FOREIGN KEY-begränsningar rad för rad. När du utför kontroller av främmande nyckel ställer InnoDB in delade radnivålås på underordnade eller överordnade poster som den måste titta på. InnoDB kontrollerar omedelbart begränsningar för främmande nyckel; checken skjuts inte upp till transaktionsbekräftelse. Enligt SQL-standarden bör standardbeteendet skjutas upp vid kontroll. Det vill säga, begränsningar kontrolleras först efter att hela SQL-satsen har bearbetats. Tills InnoDB implementerar uppskjuten kontroll av begränsningar kommer vissa saker att vara omöjliga, som att ta bort en post som refererar till sig själv med hjälp av en främmande nyckel.

Tillbaka till ritbordet.



  1. Hur tar man bort tidsdelen av ett datetime-värde (SQL-server)?

  2. Kalkylblad kontra databaser:Är det dags att byta? Del 1

  3. MySQL vs MariaDB vs Percona Server:Jämförelse av säkerhetsfunktioner

  4. Rails:Utplacering till Heroku, många problem