Welcome 微信登录

首页 / 数据库 / MySQL / Oracle约束的关键字Enable/Disable/Validate/Novalidate

1 组合特性说明
 ValidateNovalidate
已有记录新增/删除记录已有记录新增/删除记录
EnableYesYesNoYes
DisableYesNoNoNo
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 altered3 测试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 complete4 测试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 complete5 测试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)
表情: 姓名: 字数