微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

启用 oracle SQL 约束

如何解决启用 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 举报,一经查实,本站将立刻删除。