http://www.dbunix.com/?p=188

关于约束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.
Posted on 2008-09-11 at 下午 3:21 | Filed: 数据库 |
Entry RSS 2.0 feed |

Leave a Trackback |
Post a comment |

One Response to “关于约束ENABLE NOVALIDATE的一个疑问”

关于约束ENABLE NOVALIDATE的一个疑问的更多相关文章

  1. [20180713]关于hash join 测试中一个疑问.txt

    [20180713]关于hash join 测试中一个疑问.txt --//上个星期做的测试,链接: http://blog.itpub.net/267265/viewspace-2157424/-- ...

  2. ECMAScript prototype的一个疑问。

    既然是疑问 当然首先要贴一段代码. 背景: 探究js的原型继承模式. 疑惑:为何person1和person2的prototype 居然是相等的. 附: 1.Object.create(proto, ...

  3. [apue] 管道原子写入量的一个疑问

    PIPE_BUF定义了管道可原子写入的数据量,在我的系统(CentOS 6.7)上这个值是4096,写了个程序验证了一下,通过三个维度来考察: N: 生产者数量 M:每个生产者的生产次数 P:每次写入 ...

  4. 对SSL一个疑问的新理解

    看了很多关于Https/SSL的介绍,关于数字证书部分,我一直有个疑问:如果数字证书文件被别人拿到,那是不是就可以进行通讯了呢?如果这样,那整个安全机制就完全失去作用了.从开发的角度,我拿到别人的数字 ...

  5. C#中关于静态与非静态的一个疑问

    关于静态方法.变量和非静态方法.变量的区别,园里的大神早就有了许多详细的总结,个人觉得静态方法.变量与非静态方法.变量的区别可以总结为以下两句话: 静态的是属于类的 非静态是属于对象的 就是说调用静态 ...

  6. 关于过两级mux的时序约束的添加(一个非常经典的时序约束问题)

    非常开心自己的微信公众号: <数字集成电路设计及EDA教程> 关注者超过了1700 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具 ...

  7. 关于mysql5.6.13的一个疑问

    现在在做一个系统 使用了这么一个查询 select a.id,a.fdate,a.fbillno,e.fname as fwarehousename,a.fnote,c.fname as fsuppl ...

  8. iTunes Connect开发者指南中的一个疑问

    iTunes Connect Developer Guide     避免app版本出现在iClound中,我的疑问是对已经上架的版本不能设置,那么这个功能的真正意义在哪里? 大部分用户去应用页面下载 ...

  9. matlab的一个疑问?

    把逻辑值放入一个已知矩阵,为啥结果是:真就取矩阵的值,假就不取值? K>> aaaa=randi(10,10,2) aaaa = 6 3 10 4 6 7 5 2 6 3 8 2 1 2 ...

随机推荐

  1. 一条SQL语句求全年平均值

    一年有8760个小时!(才这么点...) 有个气候表,存储了当地从1到8760小时的温度数据.现在,要求全年的温度每天平均值. CREATE TABLE #Climate(h INT ,t DECIM ...

  2. OTA制作及升级过程笔记【转】

    本文转载自:http://www.it610.com/article/5752570.htm 1.概述 1.1   文档概要 前段时间学习了AndroidRecovery模式及OTA升级过程,为加深理 ...

  3. 杂项-Java:JNI

    ylbtech-杂项-Java:JNI JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++).从Java1.1开始, ...

  4. 操作系统-虚拟机-百科:VM

    ylbtech-操作系统-虚拟机-百科:VM 虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的.运行在一个完全隔离环境中的完整计算机系统. 虚拟系统通过生成现有操作系统的 ...

  5. c++之——————各种变量

    对我们程序员来讲,“变量”和“对象”是可以相互互换使用的.-------------开篇之词. 变量:提供一个具有名字的可供程序操作的存储空间.由类型说明符和其后紧跟的数个列表组成,其中变量名之间使用 ...

  6. Necklace of Beads(polya定理)

    http://poj.org/problem?id=1286 题意:求用3种颜色给n个珠子涂色的方案数.polya定理模板题. #include <stdio.h> #include &l ...

  7. JDBC-ODBC桥接器连接Access数据库

    今天,遇到一个问题,虽然不是什么大难题,但对于初学者来说也缠绕了我好久!(好气哦) 问题: 运行jsp项目连接不上数据库: java.sql.SQLException: [Microsoft][ODB ...

  8. go之switch

    switch 条件语句一 格式 switch initialization{ case v1: // do something case v2: // do something case v2: // ...

  9. Java 精度控制

    四舍五入,保留两位小数 (找了很多种方法,都有问题,测试得出下面这种方式是可用的) String str="0.235"; String.format("%.2f&quo ...

  10. android指纹识别、拼图游戏、仿MIUI长截屏、bilibili最美创意等源码

    Android精选源码 一个动画效果的播放控件,播放,暂停,停止之间的动画 用 RxJava 实现 Android 指纹识别代码 Android仿滴滴打车(滴滴UI)源码 Android高仿哔哩哔哩动 ...