sql >> Database >  >> RDS >> Mysql

Kan ik in MySQL referentiële integriteitscontroles uitstellen tot commit?

Het lijkt erop dat mijn antwoord hier ...

Net als MySQL in het algemeen, controleert InnoDB in een SQL-instructie die veel rijen invoegt, verwijdert of bijwerkt, de UNIQUE- en FOREIGN KEY-beperkingen rij voor rij. Bij het uitvoeren van externe sleutelcontroles stelt InnoDB gedeelde vergrendelingen op rijniveau in op onderliggende of bovenliggende records waarnaar het moet kijken. InnoDB controleert de beperkingen van externe sleutels onmiddellijk; de cheque wordt niet uitgesteld om de transactie vast te leggen. Volgens de SQL-standaard moet het standaardgedrag uitgestelde controle zijn. Dat wil zeggen, beperkingen worden pas gecontroleerd nadat de volledige SQL-instructie is verwerkt. Totdat InnoDB uitgestelde beperkingscontrole implementeert, zullen sommige dingen onmogelijk zijn, zoals het verwijderen van een record dat naar zichzelf verwijst met behulp van een externe sleutel.

Terug naar de tekentafel.



  1. Controleer of een Postgres JSON-array een string bevat

  2. Hoe krijg ik de eerste dag van elke overeenkomstige maand in mysql?

  3. Kolom berekend uit een andere kolom?

  4. Databasegebruikersbeheer:rollen beheren voor MariaDB