disabled and validated 不能DML

Inserting Rows Not Allowed in Table with DISABLED and VALIDATED Constraint (Doc ID 139337.1)​编辑To Bottom



Problem Description:
====================You create a table with a referential integrity constraint (a foreign key
constraint) referencing a view constraint.SQL> CREATE TABLE TEST20 ( seq number, test char(50), id number REFERENCES DEPT20_EMPLOYEES RELY DISABLE VALIDATE);Table created.SQL> select * from test20;no rows selectedSQL> select id from dept20_employees;ID ---------- 201 202 Attempting to insert into this table results in an ORA-25128 "No insert/
update/delete on table with constraint (%s.%s) disabled and validated" error.SQL> insert into test20 values (1,'TEST',201);insert into test20 values (1,'TEST',201)*ERROR at line 1:ORA-25128: No insert/update/delete on table with constraint (HR.SYS_C003510)disabled and validatedSQL> insert into test20 values (1,'TEST',203);insert into test20 values (1,'TEST',203)*ERROR at line 1:ORA-25128: No insert/update/delete on table with constraint (HR.SYS_C003510)disabled and validatedSolution Description:
=====================Set the state of the Foreign Key constraint to DISABLE NOVALIDATE.  
For example:SQL> alter table test20 modify constraint sys_c003510 NOVALIDATE;Table altered.SQL> insert into test20 values (1,'TEST',203);1 row created.Explanation:
============The view constraint referenced by table TEST20 is necessarily a constraint
in DISABLE NOVALIDATE state, since it is required by view constraint definition:SQL> CREATE VIEW DEPT20_EMPLOYEES (id PRIMARY KEY RELY DISABLE NOVALIDATE ,first_name, last_name, email)AS SELECT employee_id, first_name, last_name, emailFROM EMPLOYEESWHERE department_id = 20;View created.Therefore any referencing constraint needs to be in DISABLE NOVALIDATE as well.

文档课题:oracleconstraintenable validateenable novalidatedisable validatedisable novalidate解析.

1、概念

oracle完整性约束为以下四种状态:

enable validate:开启约束检查所有存在的数据

enable novalidate:开启约束不检查已存在的数据

disable validate:禁用约束,删除约束上的索引并禁止对约束列进行任何dml操作

disable novalidate:与禁用约束一样,不检查以后的数据

2、测试

环境:oracle 19.12 + 多租户

2.1、外键测试

SQL> conn ora1/ora1@orclpdb;                         

Connected.

SQL> create table p_table (id   number(10,2),

  2                   name varchar2(20));

Table created.

SQL> insert into p_table values (1,'leo');

1 row created.

--给p_table表增加主键约束.

SQL> alter table p_table add constraint pk_ptable_id primary key (id);

Table altered.

SQL> create table f_table(id   number(10,2),

  2                  name varchar2(20));

Table created.

SQL> insert into f_table values (1,'alina');

1 row created.

--给f_table表增加外键

SQL> alter table f_table add constraint fk_ftable_id foreign key (id) references p_table(id);

Table altered.

SQL> insert into f_table values (2,'liujun');

insert into f_table values (2,'liujun')

*

ERROR at line 1:

ORA-02291: integrity constraint (ORA1.FK_FTABLE_ID) violated - parent key not

found

说明:向f_table表insert数据,报错:在父表中未找到父项关键字,违反完整性约束条件ORA1.FK_FTABLE_ID.

--disable novalidate禁用完整性约束ORA1.FK_FTABLE_ID

SQL> alter table f_table disable novalidate constraint fk_ftable_id;

Table altered.

SQL> insert into f_table values (2,'liujun');

1 row created.

SQL> select * from f_table;

        ID NAME

---------- --------------------

         1 alina

         2 liujun

SQL> alter table f_table enable validate constraint fk_ftable_id;

alter table f_table enable validate constraint fk_ftable_id

                                               *

ERROR at line 1:

ORA-02298: cannot validate (ORA1.FK_FTABLE_ID) - parent keys not found

说明:添加完数据后,enable validate重新激活约束FK_FTABLE_ID,报错无法验证ORA1.FK_FTABLE_ID,未在父项中找到关键字.

异常原因:enable validate会检查已存在的数据是否满足完整性约束.

--使用enable novalidate激活约束,旨在不检查此前存在的数据.

SQL> alter table f_table enable novalidate constraint fk_ftable_id;

Table altered.

小结:外键可直接通过enable novalidate激活失效的完整性约束.

2.2、主键测试

SQL> select * from p_table;

        ID NAME

---------- --------------------

         1 leo

SQL> alter table p_table disable novalidate primary key;

alter table p_table disable novalidate primary key

*

ERROR at line 1:

ORA-02297: cannot disable constraint (ORA1.PK_PTABLE_ID) - dependencies exist

说明:disable novalidate无法直接禁用主键,因为存在外键引用该主键.

--先使用disable validate使外键失效

SQL> alter table f_table disable validate constraint fk_ftable_id;

alter table f_table disable validate constraint fk_ftable_id

                                                *

ERROR at line 1:

ORA-02298: cannot validate (ORA1.FK_FTABLE_ID) - parent keys not found

SQL> select * from f_table;

        ID NAME

---------- --------------------

         1 alina

         2 liujun

SQL> delete from f_table where id=2;

1 row deleted.

SQL> alter table f_table disable validate constraint fk_ftable_id;

Table altered.

--使用disable validate后,验证索引以及是否禁止对约束列的任何dml操作

SQL> update f_table set id=2 where name='alina';

update f_table set id=2 where name='alina'

*

ERROR at line 1:

ORA-25128: No insert/update/delete on table with constraint (ORA1.FK_FTABLE_ID)

disabled and validated

SQL> delete from f_table where id=1;

delete from f_table where id=1

*

ERROR at line 1:

ORA-25128: No insert/update/delete on table with constraint (ORA1.FK_FTABLE_ID)

disabled and validated

SQL> insert into f_table values (2,'liujun');

insert into f_table values (2,'liujun')

*

ERROR at line 1:

ORA-25128: No insert/update/delete on table with constraint (ORA1.FK_FTABLE_ID)

disabled and validated

SQL> select index_name,index_type,table_name,table_type from user_indexes where table_name='F_TABLE';

no rows selected

说明:使用disable validate后,索引被删除,同时约束列也无法执行dml操作.

--外键disable validate后,处理主键.

SQL> alter table p_table disable novalidate primary key;

Table altered.

SQL> insert into p_table values (1,'paul');

1 row created.

SQL> select * from p_table;

        ID NAME

---------- --------------------

         1 leo

         1 paul

SQL> alter table p_table enable novalidate primary key;

alter table p_table enable novalidate primary key

*

ERROR at line 1:

ORA-02437: cannot validate (ORA1.PK_PTABLE_ID) - primary key violated

说明:主键列无法使用enable novalidate直接激活主键.

--主键对应的索引PK_PTABLE_ID查询不到

SQL> select index_name,index_type,table_name,table_type,table_owner from user_indexes where table_name='P_TABLE';

no rows selected

--p_table表重新创建索引

SQL> create index pk_ptable_id02 on p_table (id);

Index created.

SQL> select * from p_table;   

        ID NAME

---------- --------------------

         1 leo

         1 paul

SQL> alter table p_table enable novalidate primary key;

Table altered.

说明:添加索引后,主键成功被激活.

SQL> select index_name,index_type,table_name,table_type,table_owner from user_indexes where table_name='P_TABLE'

INDEX_NAME           INDEX_TYPE      TABLE_NAME      TABLE_TYPE  TABLE_OWNER

-------------------- --------------- --------------- ----------- ---------------

PK_PTABLE_ID02       NORMAL          P_TABLE         TABLE       ORA1

总结:novalidate在外键可以正常激活,但对于主键需要先创建相关索引才能重新激活.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1550001.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

为什么计算机关机慢,现在告诉你,为什么电脑关机速度慢或关不了机

原标题:现在告诉你,为什么电脑关机速度慢或关不了机 电脑关机越来越慢,这个问题是不是让你感到十分头疼?接下来,小编给你支几招。 电脑在关机前,一定要关闭所有打开的程序。如果后台打开的程序过多&#xf…

计算机关机速度,关机速度慢

许多网民用了一段时间电脑后发现电脑关机速度慢了许多,但是不知道怎么优化电脑,让速度提高。下面本文为您盘点关机速度慢原因有哪些,并且告诉您加快关机速度的方法。 关机速度慢的原因是什么? 1.电脑存在木马病毒或者恶意插件&…

计算机关机慢怎么解决方法,电脑关机很慢,详细教您win7电脑关机很慢的解决方法...

电脑的问题千千万万,但是我们人类的智慧却也是永无止尽的。所以这几天网上帖子最多讨论的就是“电脑关机很慢”,每个人都在说自己的win7系统的电脑关机巨慢。所以为了解决网上小伙伴们遇到的问题,小编我今天就来给你们讲讲win7电脑关机很慢的…

学优计算机怎么关机,Windows7电脑关机速度慢的解决办法

最近一位Windows7用户反馈,电脑的关机速度越来越慢了,于是就问小编有没办法解决这个问题。其实电脑关机速度慢和开机速度慢一个道理,基本都是由于磁盘、电源等问题造成的。下面小编就给大家讲解Windows7系统关机速度慢的解决办法。 注&#x…

笔记本Windows10 关机突然变慢解决记录

平时笔记本点击关机后很快屏幕关闭,然后2--3秒后鼠标灯也灭了;但是昨天关机时,突然发现屏幕还是很快关闭,鼠标灯却亮了好几分钟才熄灭,于是在网上找了很多帖子,都没有解决问题,找笔记本售后在线…

为什么计算机关机慢,为什么电脑关机速度很慢_加快电脑关机速度的具体办法...

我们的电脑使用久后,就会出现各种各样的问题,如关机慢、卡顿等情况。那具体是因为什么原因造成的电脑关机速度慢呢?我们又该怎么来解决这一情况呢?今天系统城小编就来为大家分享关于加快电脑关机速度的具体办法,一起往下看吧。 具体办法如下: 方法一:清理垃圾 1、 关机慢可…

计算机关机慢什么原因,电脑关机速度很慢?什么原因?怎么解决?

自从微软的xp系统推出了舞台后,目前最低级的电脑系统就是win7系统,大部分人的电脑系统也是win7。电脑在win7系统使用下也会遇到许多的难题,其中的一种就是关机速度,有些人发现自己的电脑关机速度越来越慢了,过去十几秒…

计算机重启很慢,教您win7电脑关机很慢的解决方法

电脑在我们生活中出现的次数堪比我们每天吃的一日三餐,每天都离不开要使用它的时候。那么,今天小编就来跟你们说一个问题,那就是当遇到电脑关机速度很慢的时候,我们要怎么解决。今天小编我就告诉你win7电脑开机很慢的解决办法。 电…

Linux下关机速度慢

1、问题描述 最近装了deepwineqq 和wchat,但是莫名其妙的关机速度变得很慢,最后在网上找了资料以后解决办法如下 2、解决方案 2.1 打开system.conf文件 sudo vim /etc/systemd/system.conf 注:如果你没有安装vim的话使用vi也都是一样的&…

电脑关机很慢是怎么回事

可能很多朋友在给电脑关机时,都会遇到电脑关机速度慢的情况,其实很多时候都是因为有程序在运行的结果,我们只要关闭一些任务进程就可以改善这个问题。 更多win11教程尽在小白系统重装官网 系统:win10系统 电脑:联想I…

计算机关机慢怎么解决方法,你知道电脑关机慢怎么解决吗?

加快计算机关机速度 您是否厌倦了等待计算机关闭的烦恼?关闭计算机的速度非常慢,这并非常见问题。但是,只需几个简单的步骤就可以轻松纠正它。实际上,在Windows可以完成其主要关闭操作之前,需要关闭许多程序和进程。 但…

计算机关机慢什么原因,电脑关机慢是什么原因,教您电脑关机慢是什么原因

小伙伴们,你们在关电脑的时候会不会遇到关机很慢的情况,就是关个机还要花上好几分钟的时间。当遇到这种情况的时候真的是浪费时间,所以今天小编就来给你们分析一下电脑关机慢是什么原因。 我们的电脑就像一个定时的病毒库,只要一不…

计算机关机慢怎么解决方法,电脑关机慢,教您怎么解决电脑关机慢

造成电脑关机慢的原因有很多,例如电脑里的垃圾太多、电脑的灰尘太多等都是造成电脑关机慢的原因。但是不怕,你们有小编我呀。接下来小编就告诉你们怎么解决电脑关机慢的问题。 我们在生活中经常会遇到电脑关机慢的问题,那当我们遇到电脑关机慢…

计算机关机慢什么原因,电脑关机慢是什么原因,小编教你电脑关机慢是什么原因...

小伙伴们,在解决一个问题的时候,我们首先看的不是找方法,而是先找到原因,然后再根据原因来找到解决的方法。那么今天小编就来说说电脑关机慢的原因是什么。 我们的电脑就像一个定时的病毒库,只要一不小心,它…

为什么计算机关机慢,电脑关机慢是什么原因 电脑关机慢的原因【图文】

使用过电脑的朋友都知道,在初期电脑关机是相当的快的,可是使用越久就会发现,电脑的关机速度减慢了许多,平时只需要30秒那样就可以关机了,到了最后居然要一分多钟关个电脑,为什么关机的时间变慢了呢?为什么…

计算机关机慢怎么解决方法,电脑关机慢怎么办?电脑关机慢的解决方法

多数时候我们比较关注开机速度,开机速度,一般来说电脑开机速度在20s-1分钟左右都是正常的,至于到底能有多快则取决于电脑与系统了,例如目前采用固态硬盘的超级本开机时间仅需要10s,甚至更快,这种开机速度算…

电脑关机很慢怎么办?这5个方法很有用!

案例:电脑关机很慢怎么办? 【我的电脑才买来不久,现在每次关机都很慢,有时甚至一直在转圈圈无法关机,怎么处理这种情况呢?】 如果使用电脑时间长了,我们可能会发现电脑的各项性能都会有所下降…

ubuntu18.04下复现 singleshotpose(yolo-6D) 源代码复现

源代码地址 首先配置好conda环境(需要提前安装ubuntu18.04和 anaconda或者miniconda) 原代码的说明里说可以选择安装python 3.6也可以装python2.7(我最开始的时候装的是python2.7版本的conda环境,但是折腾了很久,pyto…

CVPR 2022 | OVE6D:用于基于深度的6D对象姿势估计的对象视点编码

OVE6D: Object Viewpoint Encoding for Depth-based 6D Object Pose Estimation 代码链接:https://github.com/dingdingcai/OVE6D-pose 文章链接:https://arxiv.org/abs/2203.01072 作者:Yu 摘要: 本文提出了一个通用的框架&#…

GDR-Net: Geometry-Guided Direct Regression Network for Monocular 6D Object Pose Estimati

转载请注明作者和出处: http://blog.csdn.net/john_bh/ paper 地址:GDR-Net: Geometry-Guided Direct Regression Network for Monocular 6D Object Pose Estimation 作者及团队: 王谷 & 季向阳 团队 & 清华大学 & 字节跳动 &am…