-
+
SET CONSTRAINTS
SET CONSTRAINTS
- set constraint checking modes for the current transaction
+ set constraint check timing for the current transaction
SET CONSTRAINTS with a list of constraint names changes
- the mode of just those constraints (which must all be deferrable). The
+ the mode of just those constraints (which must all be deferrable). Each
+ constraint name can be schema-qualified. The
current schema search path is used to find the first matching name if
no schema name is specified. SET CONSTRAINTS ALL
changes the mode of all deferrable constraints.
- Currently, only UNIQUE>, PRIMARY KEY>, and
- REFERENCES> (foreign key) constraints are affected by this
- setting. NOT NULL> and CHECK> constraints are
+ Currently, only UNIQUE>, PRIMARY KEY>,
+ REFERENCES> (foreign key), and EXCLUDE>
+ constraints are affected by this setting.
+ NOT NULL> and CHECK> constraints are
always checked immediately when a row is inserted or modified
(not> at the end of the statement).
- Uniqueness constraints that have not been declared DEFERRABLE>
- are also checked immediately.
+ Uniqueness and exclusion constraints that have not been declared
+ DEFERRABLE> are also checked immediately.
Notes
+ Because
PostgreSQL does not require constraint
+ names to be unique within a schema (but only per-table), it is possible
+ that there is more than one match for a specified constraint name.
+ In this case SET CONSTRAINTS will act on all matches.
+ For a non-schema-qualified name, once a match or matches have been found in
+ some schema in the search path, schemas appearing later in the path are not
+ searched.
+
+
This command only alters the behavior of constraints within the
current transaction. Thus, if you execute this command outside of a
This command complies with the behavior defined in the SQL
standard, except for the limitation that, in
-
PostgreSQL, it only applies to
- foreign-key and uniqueness constraints.
+
PostgreSQL, it does not apply to
+ NOT NULL> and CHECK> constraints.
+ Also,
PostgreSQL checks non-deferrable
+ uniqueness constraints immediately, not at end of statement as the
+ standard would suggest.