oracle事物显示启用约束,sql – 启用oracle约束的问题

我正在尝试几天来禁用所有表的约束,插入数据并启用约束.它工作但我做了一些测试,当我插入一个不尊重外键的行时,启用约束时没有错误消息.我只能看到该约束未经验证.

这是要禁用的代码

begin

BEGIN

FOR rec IN ( SELECT constraint_name, table_name FROM user_constraints WHERE constraint_type = 'R' OR constraint_type = 'P' )

LOOP

BEGIN

EXECUTE IMMEDIATE 'alter table '||rec.table_name||' disable constraint '||rec.constraint_name;

EXCEPTION WHEN OTHERS THEN

dbms_output.put_line( 'ERROR: alter table '||rec.table_name||' DISABLE constraint '||rec.constraint_name||';' );

END;

END LOOP;

DBMS_OUTPUT.PUT_LINE('CONSTRAINTS DISABLED');

END;

BEGIN

FOR rec IN ( SELECT trigger_name FROM user_triggers WHERE TRIGGER_NAME NOT LIKE 'BIN$%' )

LOOP

EXECUTE IMMEDIATE 'alter trigger '||rec.trigger_name||' disable';

END LOOP;

END;

DBMS_OUTPUT.PUT_LINE('TRIGGERS DISABLED');

end;

/

这是要启用的代码

begin

BEGIN

FOR rec IN ( SELECT constraint_name, table_name FROM user_constraints where status = 'DISABLED' and constraint_type = 'R' OR constraint_type = 'P' )

LOOP

BEGIN

EXECUTE IMMEDIATE 'alter table '||rec.table_name||' enable constraint '||rec.constraint_name;

dbms_output.put_line('alter table '||rec.table_name||' enable constraint '||rec.constraint_name);

EXCEPTION

WHEN OTHERS THEN

dbms_output.put_line('ERROR: alter table '||rec.table_name||' enable constraint '||rec.constraint_name||' ;' );

END;

END LOOP;

END;

DBMS_OUTPUT.PUT_LINE('CONSTRAINTS ENABLED');

BEGIN

FOR rec IN ( SELECT trigger_name FROM user_triggers WHERE TRIGGER_NAME NOT LIKE 'BIN$%' )

LOOP

EXECUTE IMMEDIATE 'alter trigger '||rec.trigger_name||' enable';

END LOOP;

END;

DBMS_OUTPUT.PUT_LINE('TRIGGERS ENABLED');

END;

我不知道如何在最后检查所有约束,如果不起作用则执行回滚.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值