xyhui 发表于 2013-1-4 01:13:49

ORACLE中约束-DEFERRABLE

<div id="cnblogs_post_body"><div class="desc rich-content">今天看到了oracle的约束。提到DEFERRABLE,很新鲜,至少SQL SERVER里是没这玩意儿。
定义为可延迟(deferrable)的约束,可以指定为:
1.INITIALLY IMMEDIATE 初始化立即执行
2.INITIALLY DEFERRED    初始化延迟执行
从字面意思看,猜测是让约束延迟检查,但是一个初始化立即执行,一个初始化延迟执行。这又是什么意思? 我们动手测试一下吧
<div id="highlighter_570841" class="syntaxhighlightersql"><div class="cnblogs_code">--延迟约束测试CREATE TABLE CUST(    CUST_ID NUMBER(2) NOT NULL,    CUST_NAME VARCHAR2(15));SELECT * FROM CUST;--新增初始化延迟约束ALTER TABLE CUSTADD CONSTRAINT CUST_ID_PK PRIMARY KEY(CUST_ID) DEFERRABLE INITIALLY DEFERRED;                   --插入数据测试INSERT INTO CUST VALUES (1,'RAJ'); -- ROW 1INSERT INTO CUST VALUES (1,'SAM'); -- ROW 2COMMIT;--ORA-02091: transaction rolled back--ORA-00001: unique constraint (IIMAX.CUST_ID_PK) violated
页: [1]
查看完整版本: ORACLE中约束-DEFERRABLE