首页 » ORACLE » Script: Procedure 启用/禁用表上全部外键

Script: Procedure 启用/禁用表上全部外键

一个充满外键的表中DML,因为验证的原因会浪费很多额外时间,如果在确保数据的合法性的前提下先禁用外键约束,操作完后再启用,可以提高你的DML速度,下面一个procedure启用/禁用表上的全部外键。
e.g

 CREATE OR REPLACE PROCEDURE MODIF_FK_CONS (p_tname varchar2,isenable int)
 /*
 desc  : 操作表上全部外键 
 author:anbob
 date  : 2012-3-27
 param:isenable --1 启用 --0 禁用
 */
 is
 cursor c is select constraint_name from user_constraints where table_name=upper(p_tname) and constraint_type='R';
 v_cname varchar2(30);
 v_oper varchar2(10);
 begin
 if isenable = 0 then
 v_oper := 'disable';
 elsif isenable = 1 then
 v_oper := 'enable';
 end if; 
 open c;
 loop
 fetch c into v_cname;
 exit when c%notfound;
 dbms_output.put_line(v_cname);
 execute immediate 'alter table '||p_tname||' '||v_oper||' constraint  '||v_cname;
 end loop;
 close c;
 end;
打赏

对不起,这篇文章暂时关闭评论。