Heim > Datenbank > MySQL-Tutorial > Wie wirken sich verzögerte und unmittelbare Einschränkungen auf die Durchsetzung primärer und eindeutiger Schlüssel in Datenbanktransaktionen aus?

Wie wirken sich verzögerte und unmittelbare Einschränkungen auf die Durchsetzung primärer und eindeutiger Schlüssel in Datenbanktransaktionen aus?

Patricia Arquette
Freigeben: 2025-01-06 09:02:44
Original
749 Leute haben es durchsucht

How Do Deferred and Immediate Constraints Affect Primary and Unique Key Enforcement in Database Transactions?

Die definierte Einschränkung DEFERRABLE INITIALLY IMMEDIATE bleibt aufgeschoben

Durchsetzung verzögerter Einschränkungen

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.

Aufgeschobener Zustand

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.

Unmittelbarer Status

  • Mit INITIALLY IMMEDIATE definierte Einschränkungen werden erst nach jedem durchgesetzt Anweisung.
  • INITALLY IMMEDIATE und SET CONSTRAINTS IMMEDIATE verhalten sich identisch.

Aufschub und die PostgreSQL-Implementierung

  • PostgreSQL erzwingt nicht verzögerte Einschränkungen nach jeder Zeilenaktualisierung , was zu potenziellen Konflikten führt.
  • DEFERRABLE-Einschränkungen bieten a Problemumgehung für diese fehlerhafte Implementierung.

Zusammenfassung der Durchsetzung von Einschränkungen

  • DEFERRABLE INITIALLY IMMEDIATE-Einschränkungen werden nach Anweisungen überprüft.
  • DEFERRABLE INITIALLY DEFERRED-Einschränkungen werden nach überprüft Transaktionen.
  • Nicht verzögerte Einschränkungen sind wird nach jedem Befehl überprüft.

Hinweis: UNIQUE- und PRIMARY KEY-Einschränkungen werden speziell behandelt, und nicht verzögerte Einschränkungen werden sofort nach jeder Zeilenänderung überprüft.

Kompatibilität mit SQL Standard

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.

Fremdschlüsseleinschränkungen

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!

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