ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 约束disable validate 状态测试

约束disable validate 状态测试

原创 Linux操作系统 作者:mafeicnnui 时间:2011-10-31 13:35:39 0 删除 编辑

一、创建主从表

conn scott/tiger
create table t1 as select * from dept;
create table t2 as select * from emp;

alter table t1 add constraint pk_dept$deptno primary key(deptno);
alter table t2 add constraint fk_emp$deptno foreign key(deptno) references t1(deptno);

select table_name,constraint_name,constraint_type
from user_constraints
where table_name in('T2','T1');

TABLE_NAME           CONSTRAINT_NAME                CONSTRAINT_TYPE
-------------------- ------------------------------ --------------------
T1                   PK_DEPT$DEPTNO                 P
T2                   FK_EMP$DEPTNO                  R

二、设置约束状态为 disable validate
alter table t2 disable validate constraint FK_EMP$DEPTNO;

 

SQL> delete from t1;

已删除4行。

SQL> delete from t2;
delete from t2
*
第 1 行出现错误:
ORA-25128: 不能对带有禁用和验证约束条件 (SCOTT.FK_EMP$DEPTNO) 的表进行插入/更新/删除


SQL> update t2 set empno=123;
update t2 set empno=123
*
第 1 行出现错误:
ORA-25128: 不能对带有禁用和验证约束条件 (SCOTT.FK_EMP$DEPTNO) 的表进行插入/更新/删除


SQL> insert into t2 select *from t2;
insert into t2 select *from t2
*
第 1 行出现错误:
ORA-25128: 不能对带有禁用和验证约束条件 (SCOTT.FK_EMP$DEPTNO) 的表进行插入/更新/删除

 

三、结论

 disable validate 约束状态设置后可以在子表不受影响的情况下重建父表,子表此时不能进行任何DML

 操作。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8319781/viewspace-709946/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-08-12

  • 博文量
    7
  • 访问量
    5984