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!