Heim >Datenbank >MySQL-Tutorial >Wann werden DEFERRABLE PRIMARY/UNIQUE-Schlüsseleinschränkungen tatsächlich in PostgreSQL erzwungen?

Wann werden DEFERRABLE PRIMARY/UNIQUE-Schlüsseleinschränkungen tatsächlich in PostgreSQL erzwungen?

DDD
DDDOriginal
2025-01-06 09:11:40387Durchsuche

When Are DEFERRABLE PRIMARY/UNIQUE Key Constraints Actually Enforced in PostgreSQL?

AUFSCHIEBBAR ANFANGS SOFORT Einschränkungen: Durchsetzung der Ausführung

Frage:

Was ist der genaue Punkt, an dem AUFSCHIEBBAR / AUFSCHIEBBAR/ IMMEDIATE-Eindeutigkeits-/Primärschlüsseleinschränkungen sind erzwungen?

Antwort:

Laut Tom Lane, einem bekannten PostgreSQL-Kernentwickler, ist das aktuelle Verhalten beabsichtigt und wird nicht geändert. Die Einschränkung gilt als erfüllt, wenn sie am Ende des Befehls gilt, auch wenn sie während Zwischenschritten verletzt wird.

Zusammenfassung der Durchsetzung der Einschränkung:

  • NICHT AUFSCHIEBBAR EINZIGARTIGE/PRIMÄRSCHLÜSSEL Einschränkungen: Wird nach jedem überprüft Zeile.
  • DEFERRABLE-Einschränkungen (IMMEDIATE): Wird nach jeder Anweisung überprüft.
  • DEFERRABLE-Einschränkungen (DEFERRED): Wird nach jeder Anweisung überprüft Transaktion.

Ausnahmen:

  • NICHT AUFSCHIEBBAR Eindeutigkeitseinschränkungen: Obwohl der SQL-Standard die Durchsetzung am Ende der Transaktion vorschreibt Anweisung prüft PostgreSQL unmittelbar nach jedem Befehl für UNIQUE/PRIMARY KEY auf Eindeutigkeit Einschränkungen.

Problemumgehung:

Um dem SQL-Standard zu entsprechen, deklarieren Sie die Einschränkung als AUFSCHIEBBAR, aber ANFANGSWEISE SOFORT. Dies kann jedoch Auswirkungen auf die Leistung im Vergleich zur sofortigen Eindeutigkeitsprüfung haben.

Einschränkungen:

FOREIGN KEY-Einschränkungen können nicht auf DEFERRABLE-Spalten verweisen, da die referenzierten Spalten Teil einer nicht sein müssen -Aufschiebbare Eindeutigkeits- oder Primärschlüsseleinschränkung.

Das obige ist der detaillierte Inhalt vonWann werden DEFERRABLE PRIMARY/UNIQUE-Schlüsseleinschränkungen tatsächlich in PostgreSQL erzwungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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