SET CONSTRAINTS

Name

SET CONSTRAINTS -- Set the constraint mode of the current SQL transaction

Synopsis

SET CONSTRAINTS { ALL | constraint [, ...] } { DEFERRED | IMMEDIATE }
  

Description

SET CONSTRAINTS sets the behavior of constraint evaluation in the current transaction. In IMMEDIATE mode, constraints are checked at the end of each statement. In DEFERRED mode, constraints are not checked until transaction commit.

Upon creation, a constraint is always give one of three characteristics: INITIALLY DEFERRED, INITIALLY IMMEDIATE DEFERRABLE, or INITIALLY IMMEDIATE NOT DEFERRABLE. The third class is not affected by the SET CONSTRAINTS command.

Currently, only foreign key constraints are affected by this setting. Check and unique constraints are always effectively initially immediate not deferrable.

Usage

To set the constraint mode of the current SQL transaction:
CREATE TABLE PKTABLE1 ( ptest1 int, 
 ptest2 int, ptest3 text, PRIMARY
KEY(ptest1, ptest2) );

CREATE TABLE FKTABLE1 ( ftest1 int, ftest2 int, ftest3 int, 
CONSTRAINT
constrname FOREIGN KEY(ftest1, ftest2) 
 REFERENCES PKTABLE1 MATCH FULL ON
DELETE SET NULL ON UPDATE SET NULL INITIALLY DEFERRED);

SET CONSTRAINTS ALL IMMEDIATE;
   

Compatibility

SQL92, SQL99

SET CONSTRAINT is defined in SQL92 and SQL99.