加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 无法验证,带有novalidate选项

发布时间:2020-12-12 16:15:59 所属栏目:MsSql教程 来源:网络整理
导读:嗨,我正在插入一些日期做我的表.由于某些原因,我不得不禁用我的约束.约束与索引相关联.我用过这行代码: ALTER TABLE my_table DISABLE CONSTRAINT "my_constraint" drop index 并且my_constraint处于禁用状态. 不,我想启用此约束,但在调用此行之后: ALTER T
嗨,我正在插入一些日期做我的表.由于某些原因,我不得不禁用我的约束.约束与索引相关联.我用过这行代码:
ALTER TABLE my_table DISABLE CONSTRAINT "my_constraint" drop index

并且my_constraint处于禁用状态.
不,我想启用此约束,但在调用此行之后:

ALTER TABLE my_table ENABLE NOVALIDATE CONSTRAINT "my_constraint";

我发现了一个错误:

ORA-02299: cannot validate (USER.my_constraint) – – duplicate keys found

解决方法

您不能拥有唯一索引的非唯一值.但是,您可以使用由非唯一索引强制执行的唯一约束来使用非唯一值.即使您最初创建了非唯一索引,drop index和enable语法也会尝试重新创建唯一索引,除非您在using index部分中提供了更多详细信息.

例如:

SQL> create table my_table(my_column number,2     constraint my_constraint unique (my_column));

Table created.

SQL> alter table my_table disable constraint my_constraint drop index;

Table altered.

SQL> insert into my_table select 1 from dual union all select 1 from dual;

2 rows created.

SQL> alter table my_table enable novalidate constraint my_constraint;
alter table my_table enable novalidate constraint my_constraint
*
ERROR at line 1:
ORA-02299: cannot validate (USER.MY_CONSTRAINT) - duplicate keys found


SQL> alter table my_table enable novalidate constraint my_constraint
  2     using index (create index my_index on my_table(my_column));

Table altered.

SQL> --The constraint is enforced,even though other rows violate it.
SQL> insert into my_table values(1);
insert into my_table values(1)
*
ERROR at line 1:
ORA-00001: unique constraint (USER.MY_CONSTRAINT) violated

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读