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]