1 组合特性说明| | Validate | Novalidate |
| 已有记录 | 新增/删除记录 | 已有记录 | 新增/删除记录 |
| Enable | Yes | Yes | No | Yes |
| Disable | Yes | No | No | No |
Validate确保已有数据符合约束;Novalidate不必考虑已有数据是否符合约束。 除非Novalidate被指定,Enable默认Validate;除非Validate被指定,Disable默认Novalidate。 Enable Validate与Enable相同,检查已有记录和新增记录,确保都符合约束;Enable Novalidate 允许已有记录不必满足约束条件,但新增/修改的记录必须满足;Disable Validate禁用约束,删除约束上的索引,不允许修改任何被约束的记录;Disable Novalidate与Disable相同,禁用约束,删除约束上的索引,且允许修改被约束的记录。
2 建表SQL> create table test(id int, name varchar2(10));Table createdSQL> alter table test add constraint ck_id check(id > 10);Table altered
3 测试1: Enable ValidateSQL> alter table test Enable validate constraint ck_id;Table alteredSQL> insert into test values(5, "Oracle");insert into test values(5, "Oracle")ORA-02290: 违反检查约束条件 (MYHR.CK_ID)SQL> insert into test values(17,"ERP");1 row insertedSQL> commit;Commit complete
4 测试2: Enable NovalidateSQL> alter table test disable constraint ck_id;Table alteredSQL> insert into test values(5, "Oracle");1 row insertedSQL> commit;Commit completeSQL> select * from test; ID NAME----------- ---------- 17 ERP 5 Oracle SQL> alter table test enable novalidate constraint ck_id;Table alteredSQL> insert into test values(32, "SAP");1 row insertedSQL> insert into test values(3, "Linux");insert into test values(3, "Linux")ORA-02290: 违反检查约束条件 (MYHR.CK_ID)SQL> commit;Commit complete
5 测试3: Disable ValidateSQL> delete from test where id < 10;1 row deletedSQL> commit;Commit completeSQL> alter table test disable validate constraint ck_id;Table alteredSQL> select * from test; ID NAME------------- ---------- 17 ERP 32 SAPSQL> update test set name = "Change" where id = 17;update test set name = "Change" where id = 17ORA-25128: 不能对带有禁用和验证约束条件 (MYHR.CK_ID) 的表进行插入/更新/删除
6 测试4: Disable NovalidateSQL> alter table test disable novalidate constraint ck_id;Table alteredSQL> insert into test values(2, "Linux");1 row insertedSQL> insert into test values(13, "Windows");1 row insertedSQL> update test set name = "Change" where id = 17;1 row updatedSQL> commit;Commit completeSQL> select * from test; ID NAME---------- ---------- 17 Change 13 Windows 32 SAP 2 LinuxOracle的rollup、cube、grouping sets函数Oracle约束enable validate时的数据检查相关资讯 Oracle数据库 Oracle入门教程 oracle数据库教程
- Oracle数据库全球化 (03月01日)
- Oracle数据库日期过滤方法性能比较 (02/02/2015 13:20:26)
- Oracle数据库安装中端口被占用问题 (10/29/2014 07:42:24)
| - 在CentOS 6.6上搭建C++运行环境并 (10/10/2015 19:44:40)
- Oracle数据库无法使用localhost和 (11/14/2014 16:39:10)
- 使用SQLT来构建Oracle测试用例 (08/28/2014 06:17:41)
|
本文评论 查看全部评论 (0)