如何解决启用 oracle SQL 约束
谁能帮助我,使用级联禁用数据库中表的约束,我现在遇到的问题是我不知道如何使用级联启用所有内容或如何验证所有内容是否再次启用
解决方法
没有 cascade enable
外键约束,如果这就是您的要求 - 您必须手动完成。没那么复杂;看看下面的例子。
我的架构中有一些外键约束被禁用:
SQL> select table_name,constraint_name,status
2 from user_constraints where constraint_type = 'R';
TABLE_NAME CONSTRAINT_NAME STATUS
------------------------------ ------------------------------ --------
EMP FK_EMP_DEPT DISABLED
BONUS FK_BON_EMP DISABLED
以下脚本使用动态 SQL 搜索此类约束(在 USER_CONSTRAINTS
中)并在循环中启用它们(因为否则您无法在 PL/SQL 中执行 DDL):
SQL> declare
2 l_str varchar2(400);
3 begin
4 for cur_r in (select table_name,constraint_name
5 from user_constraints
6 where constraint_type = 'R' and status = 'DISABLED'
7 )
8 loop
9 l_str := 'alter table ' || cur_r.table_name ||
10 ' enable constraint ' || cur_r.constraint_name;
11 dbms_output.put_line(l_str);
12 execute immediate l_str;
13 end loop;
14 end;
15 /
alter table EMP enable constraint FK_EMP_DEPT
alter table BONUS enable constraint FK_BON_EMP
PL/SQL procedure successfully completed.
结果:它们被启用了:
SQL> select table_name,status
2 from user_constraints where constraint_type = 'R';
TABLE_NAME CONSTRAINT_NAME STATUS
------------------------------ ------------------------------ --------
EMP FK_EMP_DEPT ENABLED
BONUS FK_BON_EMP ENABLED
SQL>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。