Oracle SQL 开发人员 - 禁用模式中的所有约束

Oracle SQL Developer - Disabling all constraints from schema

我有两个关于禁用所有约束的查询,但它们似乎不起作用。

第一个禁用外键:

select 'alter table '||table_name||' disable constraint '||constraint_name||';'
from user_constraints
where constraint_type ='R'
and status = 'ENABLED';

第二个禁用其他一切:

select 'alter table '||table_name||' disable constraint '||constraint_name||';'
from user_constraints
where status = 'ENABLED';

现在,当我使用 SELECT * FROM USER_CONSTRAINTS 检查约束时 我看他们都还是'ENABLED'。 这是为什么? 我尝试在 运行 查询后提交,但无济于事。

我的目标是使用这些查询禁用所有表的约束。

根据我上面的评论,运行 2 个查询是不够的,然后您需要 运行 这些生成的所有 alter table 语句。但是,您可以使用 PL/SQL 一次完成所有操作。我已将 2 个查询合并为一个,首先使用 order by 处理外键 (constraint_type = 'R'):

begin
  for r in
    ( select 'alter table '||table_name||' disable constraint '||constraint_name as statement
      from user_constraints
      where status = 'ENABLED'
      order by case constraint_type when 'R' then 1 else 2 end
    )
  loop
    execute immediate r.statement;
  end loop;
end;