ensure that a column does not contain null values, the not-null
constraint described in the next section can be used.
+
+
+
PostgreSQL does not support
+ CHECK constraints that reference table data other than
+ the new or updated row being checked. While a CHECK
+ constraint that violates this rule may appear to work in simple
+ tests, it cannot guarantee that the database will not reach a state
+ in which the constraint condition is false (due to subsequent changes
+ of the other row(s) involved). This would cause a database dump and
+ reload to fail. The reload could fail even when the complete
+ database state is consistent with the constraint, due to rows not
+ being loaded in an order that will satisfy the constraint. If
+ possible, use UNIQUE , EXCLUDE ,
+ or FOREIGN KEY constraints to express
+ cross-row and cross-table restrictions.
+
+
+ If what you desire is a one-time check against other rows at row
+ insertion, rather than a continuously-maintained consistency
+ guarantee, a custom trigger can be used
+ to implement that. (This approach avoids the dump/reload problem because
+
pg_dump does not reinstall triggers until after
+ reloading data, so that the check will not be enforced during a dump/reload.)
+
+
Currently, CHECK expressions cannot contain
subqueries nor refer to variables other than columns of the
- current row. The system column tableoid
+ current row (see ).
+ The system column tableoid
may be referenced, but not any other system column.