Primäre und eindeutige Schlüsseleinschränkungen, die als DEFERRED / DEFERRABLE und INITIALLY IMMEDIATE definiert sind, erzwingen die Eindeutigkeit zu bestimmten Zeitpunkten während der Transaktion Ausführung.
1. Update-Anweisungen, die mehrere Zeilen ändern:
UPDATE-Anweisungen, die mehrere Zeilen mit Primärschlüsselaustauschen ändern, sind auch mit INITIALLY IMMEDIATE-Einschränkungen erfolgreich, da die Einschränkungsprüfung bis nach der Anweisung verschoben wird.
2. Datenmodifizierende CTEs:
Datenmodifizierende CTEs verhalten sich ähnlich, mit Ausnahme von widersprüchlichen Aktualisierungen, die aufgrund einer nicht verzögerten Primärschlüsselverletzung fehlschlagen.
3. Mehrere UPDATE-Anweisungen in einer Transaktion:
Ohne SET CONSTRAINTS schlagen mehrere UPDATE-Anweisungen innerhalb einer Transaktion, die eindeutige Einschränkungen verletzen, fehl, da die Prüfung nach jeder Anweisung durchgeführt wird.
Hinweis: UNIQUE- und PRIMARY KEY-Einschränkungen werden speziell behandelt, und nicht verzögerte Einschränkungen werden sofort nach jeder Zeilenänderung überprüft.
Um standardkonformes Verhalten zu erreichen, sollten DEFERRABLE-Einschränkungen als INITIALLY IMMEDIATE deklariert werden, aber nicht aufgeschoben. Dies kann die Leistung im Vergleich zur sofortigen Eindeutigkeitsprüfung beeinträchtigen.
DEFERRABLE-Einschränkungen können nicht für FOREIGN KEY-Referenzen verwendet werden, da referenzierte Spalten nicht aufschiebbare eindeutige oder Primärschlüsseleinschränkungen sein müssen.
Das obige ist der detaillierte Inhalt vonWie wirken sich verzögerte und unmittelbare Einschränkungen auf die Durchsetzung primärer und eindeutiger Schlüssel in Datenbanktransaktionen aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!