Heim > Datenbank > MySQL-Tutorial > Hauptteil

Können referenzielle Integritätsprüfungen bis zur Festschreibung in MySQL verschoben werden?

Mary-Kate Olsen
Freigeben: 2024-11-09 20:28:02
Original
306 Leute haben es durchsucht

Can Referential Integrity Checks Be Deferred Until Commit in MySQL?

Können referenzielle Integritätsprüfungen in MySQL bis zum Commit verschoben werden?

In MySQL werden referenzielle Integritätsprüfungen sofort durchgeführt und nicht bis zum Commit der Transaktion verschoben . Diese Einschränkung, wie in der MySQL-Dokumentation hervorgehoben, verhindert bestimmte Vorgänge, wie z. B. das Löschen eines Datensatzes, der mit einem Fremdschlüssel auf sich selbst verweist.

Die Frage der Verschiebung referenzieller Integritätsprüfungen wurde bereits zuvor aufgeworfen, wie in der zu sehen ist referenzierte PoEAA-Frage. Das Problem entsteht beim Einfügen von Daten in mehrere zusammengehörige Tabellen innerhalb einer einzelnen Transaktion. Beim Versuch, in Join-Tabellen einzufügen, können aufgrund der sofortigen referenziellen Integritätsprüfung Einschränkungsfehler auftreten.

Gemäß dem SQL-Standard sollte die Einschränkungsprüfung verzögert werden. Allerdings erzwingt InnoDB, die Standardspeicher-Engine in MySQL, dies derzeit Zeile für Zeile während einer SQL-Anweisung. Dies bedeutet, dass es gemeinsame Sperren auf Zeilenebene für referenzierte oder übergeordnete Datensätze setzt und so verhindert, dass die Transaktion fortgesetzt wird.

Daher ist es in MySQL mit InnoDB als Speicher-Engine derzeit nicht möglich, referenzielle Integritätsprüfungen bis zum Commit aufzuschieben. Diese Einschränkung stellt bestimmte Datenbankvorgänge vor Herausforderungen und erfordert sorgfältige Überlegungen beim Entwurf des Datenbankschemas.

Das obige ist der detaillierte Inhalt vonKönnen referenzielle Integritätsprüfungen bis zur Festschreibung in MySQL verschoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage