ORACLE中约束-DEFERRABLE
2012-10-30 14:20
288 查看
今天看到了oracle的约束。提到DEFERRABLE,很新鲜,至少SQL SERVER里是没这玩意儿。
定义为可延迟(deferrable)的约束,可以指定为:
1.INITIALLY IMMEDIATE 初始化立即执行
2.INITIALLY DEFERRED 初始化延迟执行
从字面意思看,猜测是让约束延迟检查,但是一个初始化立即执行,一个初始化延迟执行。这又是什么意思? 我们动手测试一下吧
我们指定了约束DEFERRED,在执行第13、14行SQL,并不会理解报错。在COMMIT的时候验证约束,报错整个事务也被ROLLBACK了。
此时呢,我们修改约束为IMMEDIATE,让它在SQL语句执行后进行验证
OK,两条数据提交成功。
再来插入一条重复PK的数据试试:)
仍然是ORA-00001错误
文章同步:http://oracle.xyhui.net/post/2012-10-30/oracle-constraint-deferrable
自己动手,对概念理解的更透彻。希望有所帮助
定义为可延迟(deferrable)的约束,可以指定为:
1.INITIALLY IMMEDIATE 初始化立即执行
2.INITIALLY DEFERRED 初始化延迟执行
从字面意思看,猜测是让约束延迟检查,但是一个初始化立即执行,一个初始化延迟执行。这又是什么意思? 我们动手测试一下吧
--延迟约束测试 CREATE TABLE CUST ( CUST_ID NUMBER(2) NOT NULL, CUST_NAME VARCHAR2(15) ); SELECT * FROM CUST; --新增初始化延迟约束 ALTER TABLE CUST ADD CONSTRAINT CUST_ID_PK PRIMARY KEY(CUST_ID) DEFERRABLE INITIALLY DEFERRED; --插入数据测试 INSERT INTO CUST VALUES (1,'RAJ'); -- ROW 1 INSERT INTO CUST VALUES (1,'SAM'); -- ROW 2 COMMIT; --ORA-02091: transaction rolled back --ORA-00001: unique constraint (IIMAX.CUST_ID_PK) violated
我们指定了约束DEFERRED,在执行第13、14行SQL,并不会理解报错。在COMMIT的时候验证约束,报错整个事务也被ROLLBACK了。
此时呢,我们修改约束为IMMEDIATE,让它在SQL语句执行后进行验证
SET CONSTRAINT CUST_ID_PK IMMEDIATE; INSERT INTO CUST VALUES (1,'LATA'); --ROW 3 INSERT INTO CUST VALUES (2,'KING'); --ROW 4 COMMIT;
OK,两条数据提交成功。
再来插入一条重复PK的数据试试:)
SET CONSTRAINT CUST_ID_PK IMMEDIATE; INSERT INTO CUST VALUES (2,'IIMAX'); --ROW 5 COMMIT;
仍然是ORA-00001错误
文章同步:http://oracle.xyhui.net/post/2012-10-30/oracle-constraint-deferrable
自己动手,对概念理解的更透彻。希望有所帮助
相关文章推荐
- Oracle deferrable、immediate 约束
- Oracle:DEFERRABLE 约束和级联更新
- Oracle中查看无效的对象、约束、触发器和索引
- oracle 创建表、修改表、添加约束
- Oracle DB_约束
- Oracle实战——表的创建与约束
- Oracle的表约束
- 添加/删除约束(Oracle)
- Oracle4-之约束关键字constraint
- ORACLE约束总结
- 查看Oracle当前用户下的信息(用户,表视图,索引,表空间,同义词,存储过程函数,约束条件)
- Oracle基础知识(3)--约束
- ORACLE Unit05 视图、序列、索引 、 约束
- Linux 环境下Oracle安装与调试(六)之约束(主键,外键,CHECK,非空) 和 索引
- ORACLE INDEX (约束)
- Oracle约束的关键字Enable/Disable/Validate/Novalidate
- Oracle 唯一 约束(unique constraint) 与 索引(index) 关系说明
- Oracle约束的启用和停用
- Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间
- oracle如何操作约束