3 Stimmen

Mehrere Klauseln in einer Überprüfungsbeschränkung?

Ich versuche, mehrere Klauseln in einer Überprüfungsbedingung zu erhalten, die durch ein OR getrennt sind:

check (stop>start or stop = NULL)

wo Start und Stop Zeitstempelfelder sind. Also kann stop leer gelassen werden, aber wenn es angegeben ist, muss es später als start sein.

Verstehe ich das ganz falsch? Ich habe nichts über Zeitstempelvergleiche oder ob OR in Check-Constraints erlaubt ist, gefunden.

Dies ist in Postgres 8.4.8.

9voto

Michael Krelin - hacker Punkte 130575

Sie sollten stop IS NULL verwenden, nicht stop = NULL.

8voto

ruakh Punkte 167025

Dies ist erlaubt, aber:

  • stop = NULL ist sinnlos; du meinst stop IS NULL.
  • Es ist sowieso nicht notwendig, OR stop IS NULL anzugeben, weil Überprüfungsbeschränkungen nur etwas verbieten, was "falsch" ist, und stop > start wird "null" (weder "wahr" noch "falsch") sein, wenn stop null ist.

Weitere Informationen zu Überprüfungsbeschränkungen finden Sie unter http://www.postgresql.org/docs/8.4/interactive/ddl-constraints.html.

Es sei darauf hingewiesen, dass eine Überprüfungsbeschränkung erfüllt ist, wenn der Überprüfungsausdruck zu true oder zum Nullwert ausgewertet wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X