Mega Code Archive

 
Categories / Oracle PLSQL Tutorial / Table
 

Deferred Constraints

A deferred constraint is one that is enforced when a transaction is committed. A deferrable constraint is specified by using DEFERRABLE clause. Once you've added a constraint, you cannot change it to DEFERRABLE. You must drop and recreate the constraint. When you add a DEFERRABLE constraint, you can mark it as INITIALLY IMMEDIATE or INITIALLY DEFERRED. INITIALLY IMMEDIATE means that the constraint is checked whenever you add, update, or delete rows from a table. INITIALLY DEFERRED means that the constraint is only checked when a transaction is committed. SQL> -- create demo table SQL> create table myTable(   2    id           NUMBER(2),   3    value        NUMBER(6,2)   4  )   5  / Table created. SQL> SQL> -- prepare data SQL> insert into myTable(ID,  value)values (1,9)   2  / 1 row created. SQL> insert into myTable(ID,  value)values (2,2.11)   2  / 1 row created. SQL> insert into myTable(ID,  value)values (3,3.44)   2  / 1 row created. SQL> insert into myTable(ID,  value)values (4,-4.21)   2  / 1 row created. SQL> insert into myTable(ID,  value)values (5,10)   2  / 1 row created. SQL> insert into myTable(ID,  value)values (6,3)   2  / 1 row created. SQL> insert into myTable(ID,  value)values (7,-5.88)   2  / 1 row created. SQL> insert into myTable(ID,  value)values (8,123.45)   2  / 1 row created. SQL> insert into myTable(ID,  value)values (9,98.23)   2  / 1 row created. SQL> SQL> select * from myTable   2  /         ID      VALUE ---------- ----------          1          9          2       2.11          3       3.44          4      -4.21          5         10          6          3          7      -5.88          8     123.45          9      98.23 9 rows selected. SQL> SQL> ALTER TABLE myTable   2  ADD CONSTRAINT uq UNIQUE (id)   3  DEFERRABLE INITIALLY DEFERRED; Table altered. SQL> SQL> -- clean the table SQL> drop table myTable   2  / Table dropped. SQL>