sql - Oracle:如何获得所有可能的约束违规?
问题描述
我想知道数据库中是否存在所有禁用约束都会违反约束的数据。(如果启用了约束)
我得到所有这样的禁用约束:
select * from all_constraints where STATUS='DISABLED';
有解决办法吗?
解决方案
我为我找到了一个简单的解决方案:
spool 'disabled_constraint_violations.txt';
set serverout on size unlimited
DECLARE
sql_enable varchar2(400);
sql_disable varchar2(400);
BEGIN
FOR c IN (select OWNER, TABLE_NAME, CONSTRAINT_NAME from all_constraints where STATUS='DISABLED') LOOP
BEGIN
sql_enable := ' alter table ' || c.owner||'.'||c.table_name || ' enable constraint ' || c.constraint_name;
execute immediate sql_enable ;
sql_disable := ' alter table ' || c.owner||'.'||c.table_name || ' disable constraint ' || c.constraint_name;
execute immediate sql_disable ;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('table: '||c.table_name||' || constraint: '||c.constraint_name||' || error message: '||sqlerrm);
END;
END LOOP;
END;
set serveroutput off
spool off
推荐阅读
- angular - 在 Angular 应用程序中使用自定义 webpack
- typescript - 高效映射 RXJS 可观察对象
- c# - VM 上的 Azure Key Vault 访问引发 OAuth 异常:必须提供 ClientId 选项
- c++ - 为什么这个 C++ 方法会执行最后定义的对象的主体,而不是因为指向死对象而失败?
- excel - 没有为 If/Else 语句 + 连接产生预期结果
- php - 如何使用 php 和 ajax 进行输入登录检查?
- reactjs - 在本地 Firebase 中,如何为当前环境设置 projectId?
- ios - 如何在 UITableView 中获取自定义选中标记的行?
- udp - UDP反向隧道
- python - 运行时出错 (open-mmlab) C:\mmdetection>python setup.py develop - raise RuntimeError(message)