PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

SQL Sub-Abfragen in Check Constraint

Es wird nicht unterstützt, in einer CHECK-Einschränkung über die aktuelle Zeile hinaus zu schauen.

http://www.postgresql.org/docs/9.1/interactive/sql-createtable.html sagt:

Eine als Spalten-Constraint angegebene Check-Einschränkung sollte nur auf den Wert dieser Spalte verweisen, während ein Ausdruck, der in einer Tabellen-Einschränkung erscheint, auf mehrere Spalten verweisen kann.

Derzeit dürfen CHECK-Ausdrücke weder Unterabfragen enthalten noch auf andere Variablen als die Spalten der aktuellen Zeile verweisen.

Es gibt gute Gründe für diese Einschränkung, aber wenn Sie gerne mit Fackeln jonglieren, während Sie mit dem Einrad durch dichten Verkehr fahren, können Sie die Einschränkung mithilfe von Funktionen umgehen. Die Situationen, in denen dies nicht geschieht komm zurück, um zu beißen, du bist selten; Es wäre viel sicherer, stattdessen die Invariante im Triggercode zu erzwingen.

http://www.postgresql.org/docs/9.1/interactive/triggers.html