oracle SET CONSTRAINT[S]
来源:互联网 发布:15年广东省的经济数据 编辑:程序博客网 时间:2024/05/01 09:52
相关文档:http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_10003.htm#SQLRF55303
语法:
set_constraints::=
先创建表:
SQL> CREATE TABLE TB_CONS (ID INTEGER);表已创建。
创建约束:
SQL> ALTER TABLE TB_CONS ADD CONSTRAINT CONS_ACID CHECK (ID > 5);表已更改。
插入数据,立刻就进行验证:
SQL> INSERT INTO TB_CONS VALUES (6);已创建 1 行。SQL> INSERT INTO TB_CONS VALUES (3);INSERT INTO TB_CONS VALUES (3)*第 1 行出现错误:ORA-02290: 违反检查约束条件 (HIBERNATE.CONS_ACID)SQL>
修改约束(先DROP后ADD):
SQL> ALTER TABLE TB_CONS DROP CONSTRAINT CONS_ACID;表已更改。SQL> ALTER TABLE TB_CONS ADD CONSTRAINT CONS_ACID CHECK (ID > 5) DEFERRABLE;表已更改。
此时如果不SET CONSTRAINT,直接执行INSERT,同样会报错:
SQL> INSERT INTO TB_CONS VALUES (3);INSERT INTO TB_CONS VALUES (3)*第 1 行出现错误:ORA-02290: 违反检查约束条件 (HIBERNATE.CONS_ACID)
现在SET CONSTRAINT:
SQL> SET CONSTRAINTS CONS_ACID DEFERRED;约束条件已设置。
再次INSERT:
SQL> INSERT INTO TB_CONS VALUES (3);已创建 1 行。
但是COMMIT时会报错:
SQL> COMMIT;COMMIT*第 1 行出现错误:ORA-02091: 事务处理已回退ORA-02290: 违反检查约束条件 (HIBERNATE.CONS_ACID)
SQL> SET CONSTRAINTS CONS_ACID IMMEDIATE;约束条件已设置。
然后INSERT:
SQL> INSERT INTO TB_CONS VALUES (3);INSERT INTO TB_CONS VALUES (3)*第 1 行出现错误:ORA-02290: 违反检查约束条件 (HIBERNATE.CONS_ACID)
如果约束不是DEFERRABLE:
SQL> ALTER TABLE TB_CONS DROP CONSTRAINT CONS_ACID;表已更改。SQL> ALTER TABLE TB_CONS ADD CONSTRAINT CONS_ACID CHECK (ID > 5);表已更改。
那么设置DEFERRED时会报错:
SQL> SET CONSTRAINTS CONS_ACID DEFERRED;SET CONSTRAINTS CONS_ACID DEFERRED*第 1 行出现错误:ORA-02447: 无法延迟不可延迟的约束条件
上面是指定了约束名CONS_ACID,现在不指定,用ALL:
SQL> SET CONSTRAINTS ALL DEFERRED;约束条件已设置。SQL> INSERT INTO TB_CONS VALUES (3);已创建 1 行。SQL> COMMIT;COMMIT*第 1 行出现错误:ORA-02091: 事务处理已回退ORA-02290: 违反检查约束条件 (HIBERNATE.CONS_ACID)
还可以参考网友http://blackproof.iteye.com/blog/1675498
默认情况下,Oracle constraint是不开启延迟约束和原有数据保留验证的。那么在什么样的场景下,我们可以考虑使用这些特性呢?
1、批量数据导入、物化视图刷新的时候,事务量很大,而且存在数据规律前后颠倒的情况。此时,如果开启着立即约束应用的开关,可能存在一些暂时性的约束不满足的情况,从而影响到整个系统的运行。开启约束延迟验证,就可以帮助我们解决这个问题;
2、历史数据移植。历史数据存在不规则的情况,很多时候难以满足我们新系统的数据完整性要求。可以使用not validate的方式,对历史数据不进行约束控制,而只针对新数据开启管理;
0 0
- oracle SET CONSTRAINT[S]
- Oracle Constraint
- Oracle Constraint
- oracle Constraint
- Constraint of Oracle studing
- oracle 建表 约束 constraint
- Oracle constraint type
- Oracle Constraint 约束
- ORACLE ALTER CONSTRAINT
- constraint - Oracle Documentation
- oracle约束讲解constraint
- oracle Constraint(一)
- oracle Constraint(二)
- Oracle constraint 约束
- oracle约束-constraint
- Oracle 的constraint写法
- Oracle约束(Constraint)详解
- [Oracle]约束(constraint)
- php中大括号的用法和意义{}
- England History.Booklist
- 基于vi构建强大的IDE
- 【OpenCV+MFC】之一:在Picture控件显示图像
- 《统计自然语言处理基础》中文版翻译勘误表,持续更新
- oracle SET CONSTRAINT[S]
- 实战数据结构(12)_二叉树的线索化
- activity返回数据
- java--泛型
- 2013年算法组题目2
- 二叉查找树的实现
- linux内核系统调用和标准C库函数的关系分析
- [LeetCode] Plus One
- CF 9A. Die Roll