Heim > Datenbank > MySQL-Tutorial > Wie funktioniert die Durchsetzung der DEFERRABLE-Primärschlüsselprüfung in PostgreSQL?

Wie funktioniert die Durchsetzung der DEFERRABLE-Primärschlüsselprüfung in PostgreSQL?

Linda Hamilton
Freigeben: 2025-01-06 09:16:39
Original
399 Leute haben es durchsucht

How Does PostgreSQL's DEFERRABLE Primary Key Check Enforcement Work?

DEFERRABLE-Primärschlüssel-Prüfungsdurchsetzung

Das Verhalten einer DEFERRABLE-Primärschlüssel- oder eindeutigen Schlüsseleinschränkung hängt von ihrer Spezifikation ab. PostgreSQL berücksichtigt die folgenden Durchsetzungsszenarien:

1. DEFERRABLE INITIALLY IMMEDIATE

Einschränkungen mit DEFERRABLE INITIALLY IMMEDIATE werden nach jeder Anweisung erzwungen, nicht nach jeder Zeilenaktualisierung, wie Sie vielleicht erwarten würden. Das bedeutet:

  • In Ihrer Beispiel-UPDATE-Anweisung, die mehrere Zeilen ändert, wird die Einschränkung nicht verletzt, da alle Aktualisierungen innerhalb derselben Anweisung erfolgen.
  • Ebenso funktionieren datenmodifizierende CTEs wie beabsichtigt, es sei denn, es gibt eine separate Anweisung, die gegen die Einschränkung verstoßen würde.

2. DEFERRABLE INITIALLY DEFERRED

Einschränkungen mit DEFERRABLE INITIALLY DEFERRED werden am Ende der Transaktion erzwungen, was mehrere Aktualisierungen innerhalb derselben Transaktion ermöglicht. Dies ist nützlich, um Einschränkungen über mehrere Anweisungen hinweg durchzusetzen.

3. Nicht aufschiebbare Einschränkungen

Als NICHT AUFSCHIEBBAR deklarierte Einschränkungen werden nach jeder Zeilenaktualisierung überprüft, wodurch sie strenger werden. Dies kann zu Einschränkungsverletzungen führen, selbst wenn die Einschränkung am Ende des Befehls erfüllt wäre.

Historische Perspektive

In früheren Versionen von PostgreSQL nicht aufschiebbare Einschränkungen wurden auch nach jeder Zeilenaktualisierung überprüft. Dieses Verhalten wurde als Fehler betrachtet und anschließend in PostgreSQL 9.1 behoben.

Praktische Auswirkungen

  • Für standardkonformes Verhalten verwenden Sie DEFERRABLE INITIALLY IMMEDIATE-Einschränkungen.
  • Wenn FOREIGN KEY-Einschränkungen erforderlich sind, müssen die referenzierten Spalten Teil von a sein Nicht aufschiebbare eindeutige oder primäre Schlüsseleinschränkung.
  • DEFERRABLE ANFANGSWEISE DEFERRED-Einschränkungen können die Leistung verbessern, indem sie mehrere Aktualisierungen in einer einzigen Transaktion zulassen.

Das obige ist der detaillierte Inhalt vonWie funktioniert die Durchsetzung der DEFERRABLE-Primärschlüsselprüfung in PostgreSQL?. 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