这里找到一篇博文对这两个用法的解释:http://www.cnblogs.com/rootq/archive/2008/09/23/1297400.html

启用约束:

enable( validate) :启用约束,创建索引,对已有及新加入的数据执行约束. e

enable novalidate :启用约束,创建索引,仅对新加入的数据强制执行约束,而不管表中的现有数据.

禁用约束:

disable( novalidate):关闭约束,删除索引,可以对约束列的数据进行修改等操作.

disable validate :关闭约束,删除索引,不能对表进行 插入/更新/删除等操作.

这里自己做了下实验,也确实验证上面的说法。

下面是DISABLE VALIDATE的实验结果

declare
num number;
begin
select count(1) into num from all_tables where TABLE_NAME = 'TEST2';
if num=1 then
execute immediate 'drop table TEST2';
end if;
end;
/ create table Test2(
col1 int CONSTRAINT cons_test2_1 NOT NULL CHECK(col1>10) DISABLE VALIDATE,
col2 varchar(100) null
);
/ insert into Test2(col1,col2) values(1,'a'); 在行 32 上开始执行命令时出错:
insert into Test2(col1,col2) values(1,'a')
命令出错, 行: 32 列: 1
错误报告:
SQL 错误: ORA-25128: 不能对带有禁用和验证约束条件 (SYSTEM.SYS_C009875) 的表进行插入/更新/删除
25128. 00000 -  "No insert/update/delete on table with constraint (%s.%s) disabled and validated"
*Cause:    Try to insert/update/delete on table with DISABLE VALIDATE constraint.
*Action:   Change the constraint's states.

下面是ENANLE VALIDATE的实验结果

declare
num number;
begin
select count(1) into num from all_tables where TABLE_NAME = 'TEST2';
if num=1 then
execute immediate 'drop table TEST2';
end if;
end;
/ create table Test2(
col1 int CONSTRAINT cons_test2_1 NOT NULL CHECK(col1>10) ENABLE VALIDATE,
col2 varchar(100) null
);
/ insert into Test2(col1,col2) values(1,'a'); 在行 32 上开始执行命令时出错:
insert into Test2(col1,col2) values(1,'a')
错误报告:
SQL 错误: ORA-02290: 违反检查约束条件 (SYSTEM.SYS_C009877)
02290. 00000 -  "check constraint (%s.%s) violated"
*Cause:    The values being inserted do not satisfy the named check
          
*Action:   do not insert values that violate the constraint.

下面是ENABLE NOVALIDATE的实验结果。

declare
num number;
begin
select count(1) into num from all_tables where TABLE_NAME = 'TEST2';
if num=1 then
execute immediate 'drop table TEST2';
end if;
end;
/ create table Test2(
col1 int,
col2 varchar(100) null
);
/ insert into Test2(col1,col2) values(1,'a');
/ alter table Test2 add CONSTRAINT cons_test2_1 CHECK(col1>10) ENABLE NOVALIDATE;
/ select * from Test2;
/ insert into Test2(col1,col2) values(2,'b');

table TEST2 已创建。 1 行已插入。 table TEST2已变更。 >>Query Run In:查询结果 1

在行 41 上开始执行命令时出错: insert into Test2(col1,col2) values(2,'b') 错误报告: SQL 错误: ORA-02290: 违反检查约束条件 (SYSTEM.CONS_TEST2_1) 02290. 00000 -  "check constraint (%s.%s) violated" *Cause:    The values being inserted do not satisfy the named check            *Action:   do not insert values that violate the constraint.

Oracle ->> ENABLE VALIDATE & DISABLE VALIDATE的更多相关文章

  1. How to: Enable and Disable an Action Pane Button on a List Page [AX 2012]

    Applies To: Microsoft Dynamics AX 2012 R2, Microsoft Dynamics AX 2012 Feature Pack, Microsoft Dynami ...

  2. How to detect, enable and disable SMBv1, SMBv2, and SMBv3 in Windows and Windows Server

    转自:https://support.microsoft.com/en-us/help/2696547/detect-enable-disable-smbv1-smbv2-smbv3-in-windo ...

  3. enable or disable Oracle block change tracking

    Oracle的block change tracking用于记录上次备份以来改变过的block信息,因此打开block change tracking可以大大加快增量备份的速度. 1. Enable ...

  4. oracle enable / disable all constraint

    beginfor i in (select constraint_name, table_name from user_constraints where table_name='') LOOPexe ...

  5. KnockoutJS 3.X API 第四章 表单绑定(8) submit、enable、disable绑定

    submit绑定目的 submit绑定即为提交绑定,通常用于form元素.这种绑定方式会打断默认的提交至服务器的操作.转而提交到你设定好的提交绑定回调函数中.如果要打破这个默认规则,只需要在回调函数中 ...

  6. jqery validate、validate自定义验证方法 + jaery form Demo

    校验规则 required:true  必输字段 remote:"check.php"  使用ajax方法调用check.php验证输入值 email:true  必须输入正确格式 ...

  7. [Windows Hyper-V-Server]Enable or disable firewall rules under powershell / powershell下启用禁用防火墙规则

    http://www.cryer.co.uk/brian/windows/hyper-v-server/help_computer_cannot_be_managed.htm Enable COM+ ...

  8. How to Enable or Disable a cell in DataGridview Row ?

    Following link http://msdn.microsoft.com/en-us/library/ms171619.aspxhttp://windowsclient.net/blogs/f ...

  9. oracle约束条件状态

    Oracle完整性约束有一下4种: • DISABLE NOVALIDATE • ENABLE NOVALIDATE • DISABLE VALIDATE • ENABLE VALIDATE   •  ...

随机推荐

  1. chm文件右边部分查看不了

    右键属性-> 下面好像有句话是说该文件来自网络为保护您的计算机什么什么的,, 然后你解除锁定就能用了 版权声明:本文为博主原创文章,未经博主允许不得转载.

  2. bzoj 2327 构图暴力判断+独立集个数

    首先我们可以处理出10^6以内的所有的勾股数,如果我们有2*i-1和2*j互质, 那么A=(2*i-1)*(2*i-1)+(2*i-1)*(2*j),B=2*j*j+(2*i-1)*(2*j)为互质 ...

  3. 【BZOJ】【1052】【HAOI2007】覆盖问题

    二分+贪心 首先二分L,转化成判定问题…… 但是判定不会判啊QAQ orz hzwer,用一个最小的矩形框住所有点后,直接往矩形的角上摆正方形……第二个用同样的方法摆,最后判一下剩下的能否被完全覆盖 ...

  4. Matlab画柱状和折线对照图

        上面是效果图,看着很不错吧,主要的问题在于用XTickLabel设置横坐标时候,横坐标会扩展,就是说如果label是[1 2 3],咱就做了三组试验,参数分别是 1 2 3,但是显示是1 2 ...

  5. Shiro workshop

    吃掉<Shiro教程>的精要部分,Go ahead!

  6. skinned mesh 蜘蛛样

    被skinned mesh 折磨了 好久,开始感觉skinindices不对,因为pix显示里面全是0 后来跟来跟去发现是这样的,那些uchar的整数被pix用float的格式显示出来 (显示为0.0 ...

  7. MYSQL注入天书之服务器(两层)架构

    Background-6 服务器(两层)架构 首先介绍一下29,30,31这三关的基本情况: 服务器端有两个部分:第一部分为tomcat为引擎的jsp型服务器,第二部分为apache为引擎的php服务 ...

  8. [译]如何使用 Docker 组件开发 Django 项目?

    原文地址:Django Development With Docker Compose and Machine 以下为译文 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包 ...

  9. HDU4916 Count on the path(树dp??)

    这道题的题意其实有点略晦涩,定义f(a,b)为 minimum of vertices not on the path between vertices a and b. 其实它加一个minimum ...

  10. POJ 2566

    Bound Found Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 1445   Accepted: 487   Spec ...