外键和触发器的启停

1、禁止外键
ORACLE数据库中的外键约束名都在表user_constraints中可以查到。其中constraint_type=’R'表示是外键约束。
启用外键约束的命令为:alter table table_name enable constraint constraint_name
禁用外键约束的命令为:alter table table_name disable constraint constraint_name
然后再用SQL查出数据库中所以外键的约束名:
select ‘alter table ‘||table_name||’ enable constraint ‘||constraint_name||’;’ from user_constraints where constraint_type=’R’
select ‘alter table ‘||table_name||’ disable constraint ‘||constraint_name||’;’ from user_constraints where constraint_type=’R’

2、ORACLE禁用/启用外键和触发器
�C启用脚本
SET SERVEROUTPUT ON SIZE 1000000
BEGIN
for c in (select ‘ALTER TABLE ‘||TABLE_NAME||’ ENABLE CONSTRAINT ‘||constraint_name||’ ‘ as v_sql from user_constraints where CONSTRAINT_TYPE=’R') loop
DBMS_OUTPUT.PUT_LINE(C.V_SQL);
begin
EXECUTE IMMEDIATE c.v_sql;
exception when others then
dbms_output.put_line(sqlerrm);
end;
end loop;
for c in (select ‘ALTER TABLE ‘||TNAME||’ ENABLE ALL TRIGGERS ‘ AS v_sql from tab where tabtype=’TABLE’) loop
dbms_output.put_line(c.v_sql);
begin
execute immediate c.v_sql;
exception when others then
dbms_output.put_line(sqlerrm);
end;
end loop;
end;
/
commit;

�C禁用脚本
SET SERVEROUTPUT ON SIZE 1000000
BEGIN
for c in (select ‘ALTER TABLE ‘||TABLE_NAME||’ DISABLE CONSTRAINT ‘||constraint_name||’ ‘ as v_sql from user_constraints where CONSTRAINT_TYPE=’R') loop
DBMS_OUTPUT.PUT_LINE(C.V_SQL);
begin
EXECUTE IMMEDIATE c.v_sql;
exception when others then
dbms_output.put_line(sqlerrm);
end;
end loop;
for c in (select ‘ALTER TABLE ‘||TNAME||’ DISABLE ALL TRIGGERS ‘ AS v_sql from tab where tabtype=’TABLE’) loop
dbms_output.put_line(c.v_sql);
begin
execute immediate c.v_sql;
exception when others then
dbms_output.put_line(sqlerrm);
end;
end loop;
end;
/
commit;


你可能感兴趣的:(CONSTRAINT,trigger)