Oracle PL/SQL之ENABLE NOVALIDATE约束
2011-07-20 14:40
441 查看
在看Oracle约束时,看到ENABLE NOVALIDATE,意思是对自现在起及以后的数据启用约束,但是不管以前的数据怎样。
不过在实验的时候却出了一点小问题:
Google一下,发现原来在创建没有延时的UNIQUE或者PRIMARY KEY时会自动去创建一个唯一性索引。(By default a non-deferrable UNIQUE or PRIMARY KEY constraint will attempt to create a unqiue index. http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:8806498660292)
加上DEFERRABLE关键字,问题成功解决:
asktom上还有另外一种通过自己手动先创建一个普通索引的解决方法,有兴趣的同学可以看看。
Ref:http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:8806498660292
不过在实验的时候却出了一点小问题:
SQL> create table dept as select * from scott.dept where 1=2; Table created SQL> insert into dept select * from scott.dept where deptno=10; 1 row inserted SQL> insert into dept select * from scott.dept where deptno=10; 1 row inserted SQL> commit; Commit complete SQL> ALTER TABLE dept ADD (UNIQUE(deptno) ENABLE NOVALIDATE); ALTER TABLE dept ADD (UNIQUE(deptno) ENABLE NOVALIDATE) ORA-02299: cannot validate (XXPO.SYS_C00830643) - duplicate keys found SQL>
Google一下,发现原来在创建没有延时的UNIQUE或者PRIMARY KEY时会自动去创建一个唯一性索引。(By default a non-deferrable UNIQUE or PRIMARY KEY constraint will attempt to create a unqiue index. http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:8806498660292)
加上DEFERRABLE关键字,问题成功解决:
SQL> ALTER TABLE dept ADD (UNIQUE(deptno) DEFERRABLE ENABLE NOVALIDATE); Table altered SQL>
asktom上还有另外一种通过自己手动先创建一个普通索引的解决方法,有兴趣的同学可以看看。
Ref:http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:8806498660292
相关文章推荐
- Oracle PL/SQL之ENABLE NOVALIDATE约束
- Oracle PL/SQL之ENABLE NOVALIDATE约束
- Oracle 约束enable/disable novalidate
- Oracle约束的关键字Enable/Disable/Validate/Novalidate
- Oracle PL\SQL操作(四)索引与约束
- Oracle PL/SQL之Flashback Table与外键约束
- Oracle PL/SQL语言初级教程之完整性约束
- Oracle PL/SQL之Flashback Table与外键约束
- Oracle约束的关键字Enable/Disable/Validate/Novalidate
- Oracle PL/SQL之Flashback Table与外键约束
- Oracle PL/SQL操作(四)索引与约束
- Oracle PL/SQL开发基础(第一弹:创建表和创建约束)
- Oracle之表示约束状态的关键字Enable/Disable/Validate/Novalidate
- Oracle约束的关键字Enable/Disable/Validate/Novalidate
- Oracle PL/SQL开发基础(第二弹:使用数据字典视图查看表约束)
- Oracle约束的关键字Enable/Disable/Validate/Novalidate
- Oracle约束的关键字Enable/Disable/Validate/Novalidate
- Oracle PL/SQL语言初级教程之完整性约束
- Oracle PL/SQL高级应用 游标
- Oracle Class6. PL/SQL 简介(数据类型,逻辑比较,控制结构,错误处理)