关于约束ENABLE NOVALIDATE的一个疑问
关于约束ENABLE NOVALIDATE的一个疑问
CREATE TABLE test
(id varchar2(12),
name varchar2(30) ,CONSTRAINT pk_test PRIMARY k
ALTER TABLE test disable CONSTRAINT pk_test
然后向表中插入两条完全一样的数据并commit
我的印象是ENABLE NOVALIDATE并不检查已经存在的数
SQL> ALTER TABLE test enable novalidate constra
ALTER TABLE test enable novalidate CONSTRAINT p
*
ERROR 位于第 1 行:
ORA-02437: 无法验证 (DBO.PK_TEST) - 违反主键
参考hrb_qiuyb文章
SQL> CREATE TABLE t(a INT,b varchar2(20));
TABLE created.
SQL> INSERT INTO t VALUES(1,'lijie');
1 ROW created.
SQL> ALTER TABLE t ADD constraints pk_t_a PRIMARY KEY(a);
TABLE altered.
SQL> SELECT constraint_name,constraint_type,STATUS FROM user_constraints
WHERE TABLE_NAME='T';
CONSTRAINT_NAME C STATUS
------------------------------ - --------
PK_T_A P ENABLED
SQL> SELECT index_name,uniqueness FROM user_indexes WHERE TABLE_NAME='T';
INDEX_NAME UNIQUENES
------------------------------ ---------
PK_T_A UNIQUE
SQL> ALTER TABLE t disable constraints pk_t_a;
TABLE altered.
SQL> SELECT constraint_name,constraint_type,STATUS FROM user_constraints
WHERE TABLE_NAME='T';
CONSTRAINT_NAME C STATUS
------------------------------ - --------
PK_T_A P DISABLED
SQL> SELECT index_name,uniqueness FROM user_indexes WHERE TABLE_NAME='T';
no ROWS selected
SQL> INSERT INTO t VALUES(1,'tina');
1 ROW created.
SQL> ALTER TABLE t enable novalidate constraints pk_t_a;
ALTER TABLE t enable novalidate constraints pk_t_a
*
ERROR at line 1:
ORA-02437: cannot validate (TAOBAO.PK_T_A) - PRIMARY KEY violated
这里问题是:primary key所依赖的唯一键索引起的.
解决方法:
SQL> CREATE TABLE t2 AS (SELECT * FROM t WHERE 1=0);
TABLE created.
SQL> CREATE INDEX ind_t2_a ON t2(a);
INDEX created.
SQL> INSERT INTO t2 VALUES(1,'lijie');
1 ROW created.
SQL> ALTER TABLE t2 ADD constraints pk_t2_a PRIMARY KEY(a);
TABLE altered.
SQL> SELECT constraint_name,constraint_type,STATUS FROM user_constraints
WHERE TABLE_NAME='T2';
CONSTRAINT_NAME C STATUS
------------------------------ - --------
PK_T2_A P ENABLED
SQL> SELECT index_name,uniqueness FROM user_indexes WHERE TABLE_NAME='T2';
INDEX_NAME UNIQUENES
------------------------------ ---------
IND_T2_A NONUNIQUE
SQL> ALTER TABLE t2 disable constraints pk_t2_a;
TABLE altered.
SQL> SELECT constraint_name,constraint_type,STATUS FROM user_constraints
WHERE TABLE_NAME='T2';
CONSTRAINT_NAME C STATUS
------------------------------ - --------
PK_T2_A P DISABLED
SQL> SELECT index_name,uniqueness FROM user_indexes WHERE TABLE_NAME='T2';
INDEX_NAME UNIQUENES
------------------------------ ---------
IND_T2_A NONUNIQUE
SQL> INSERT INTO t2 VALUES(1,'tina');
1 ROW created.
SQL> ALTER TABLE t2 enable validate constraints pk_t2_a;
ALTER TABLE t2 enable validate constraints pk_t2_a
*
ERROR at line 1:
ORA-02437: cannot validate (TAOBAO.PK_T2_A) - PRIMARY KEY violated
SQL> ALTER TABLE t2 enable novalidate constraints pk_t2_a;
TABLE altered.
Entry RSS 2.0 feed |
Leave a Trackback |
Post a comment |
One Response to “关于约束ENABLE NOVALIDATE的一个疑问”
关于约束ENABLE NOVALIDATE的一个疑问的更多相关文章
- [20180713]关于hash join 测试中一个疑问.txt
[20180713]关于hash join 测试中一个疑问.txt --//上个星期做的测试,链接: http://blog.itpub.net/267265/viewspace-2157424/-- ...
- ECMAScript prototype的一个疑问。
既然是疑问 当然首先要贴一段代码. 背景: 探究js的原型继承模式. 疑惑:为何person1和person2的prototype 居然是相等的. 附: 1.Object.create(proto, ...
- [apue] 管道原子写入量的一个疑问
PIPE_BUF定义了管道可原子写入的数据量,在我的系统(CentOS 6.7)上这个值是4096,写了个程序验证了一下,通过三个维度来考察: N: 生产者数量 M:每个生产者的生产次数 P:每次写入 ...
- 对SSL一个疑问的新理解
看了很多关于Https/SSL的介绍,关于数字证书部分,我一直有个疑问:如果数字证书文件被别人拿到,那是不是就可以进行通讯了呢?如果这样,那整个安全机制就完全失去作用了.从开发的角度,我拿到别人的数字 ...
- C#中关于静态与非静态的一个疑问
关于静态方法.变量和非静态方法.变量的区别,园里的大神早就有了许多详细的总结,个人觉得静态方法.变量与非静态方法.变量的区别可以总结为以下两句话: 静态的是属于类的 非静态是属于对象的 就是说调用静态 ...
- 关于过两级mux的时序约束的添加(一个非常经典的时序约束问题)
非常开心自己的微信公众号: <数字集成电路设计及EDA教程> 关注者超过了1700 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具 ...
- 关于mysql5.6.13的一个疑问
现在在做一个系统 使用了这么一个查询 select a.id,a.fdate,a.fbillno,e.fname as fwarehousename,a.fnote,c.fname as fsuppl ...
- iTunes Connect开发者指南中的一个疑问
iTunes Connect Developer Guide 避免app版本出现在iClound中,我的疑问是对已经上架的版本不能设置,那么这个功能的真正意义在哪里? 大部分用户去应用页面下载 ...
- matlab的一个疑问?
把逻辑值放入一个已知矩阵,为啥结果是:真就取矩阵的值,假就不取值? K>> aaaa=randi(10,10,2) aaaa = 6 3 10 4 6 7 5 2 6 3 8 2 1 2 ...
随机推荐
- c++ 基于Policy 的 模板编程
在没真正接触c++ 模板编程之前.真的没有想到c++ 还能够这么用.最大的感触是:太灵活了,太强大了. 最初接触模板威力还是在Delta3d中,感觉里面的模板使用实在是灵活与方便,特别是dtAI中使 ...
- 前端project师的价值体如今哪里?
这是一个非常老的话题"前端project师的价值体现在哪里?".有人说:"前端project师之于站点的价值宛如化妆师之于明星的价值."一位好的Web前端开发p ...
- Framebuffer 机制【转】
本文转载自:http://blog.csdn.net/paul_liao/article/details/7706477 Framebuffer Framebuffer是Linux系统为显示设备提供的 ...
- 深度学习必备:随机梯度下降(SGD)优化算法及可视化
补充在前:实际上在我使用LSTM为流量基线建模时候,发现有效的激活函数是elu.relu.linear.prelu.leaky_relu.softplus,对应的梯度算法是adam.mom.rmspr ...
- class--类③
类的构造函数 类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行. 构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void.构造函数可用于为某些成员变量设置 ...
- 267C
二分+高斯消元 我们利用物理里的势能来表示,每个点有一个势能h,再由流量守恒可以得到deg[x]*h[x]=sigma(h[y]) 如果x,y之间有边.这个式子是由流量守恒推出的,所以当x=1或n是不 ...
- Android中使用Gson解析JSON数据
Android中使用Gson解析JSON数据 在Android中可以使用Gson解析JSON数据 首先,从 code.google.com/p/google-gson/downloads/list ...
- 第2章 安装Nodejs 2-3 Windows下安装Nodejs
http://nodejs.org
- MySQL 数据的增删改查
一.数据库的增删改 一. 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 1.使用INSERT实现数据的插入 2.UPDATE实现数据的更新 3.使用DELETE实现数 ...
- Laravel5.1学习笔记7 视图
视图 (View) 基本用法 传递数据到视图 在多个视图中分享数据 视图组件 #基本用法 视图里面包含了你应用程序所提供的 HTML 代码,并且提供一个简单的方式来分离控制器和网页呈现上的逻辑.视 ...