Oracle学习笔记(2)—约束延迟(constraints deffered)

约束延期是一个对主键、唯一键等约束进行延迟检查的功能。可以使用该功能将约束检查延迟到事务提交时,而不是在进行DDL操作之后立即进行检查。所以对约束检查也有这两个选项:延迟和立即。
 比如对于表t_test
 Name Type         Nullable Default Comments
---- ------------ -------- ------- --------
NAME VARCHAR2(12) Y                        
AGE  NUMBER(5)    Y                        

通过这个语句增加一个延迟检查的主键约束:
alter table t_test add constraint pk_name primary key (name) DEFERRABLE INITIALLY DEFERRED;

执行如下操作:
SQL>insert into t_test values ('Tom',32);

1 row inserted

SQL> commit;

Commit complete

SQL> select * from t_test;

NAME            AGE
------------ ------
Tom        32

SQL> insert into t_test values ('Tom',32);

1 row inserted

SQL> commit;

commit

ORA-02091: 事务处理已重算
ORA-00001: 违反唯一约束条件 (SCOTT.PK_NAME)


这个唯一约束条件的检查时在commit时候进行检查的,而不是在insert了违反约束条件的值之后马上进行检查。

你可能感兴趣的:(Oracle学习笔记(2)—约束延迟(constraints deffered))