ORACLE 禁用 啟用外來鍵和觸發器

2021-05-27 13:54:56 字數 1655 閱讀 1040

oracle 禁用/啟用外來鍵和觸發器

在很多資料庫維護工作中,經常會遇到對現有資料的匯入匯出的操作,但是資料庫中表與表之間有很多外間關係,不能直接的按維護要求對資料進行操作,所有需要對這些外來鍵和觸發器臨時的禁用,然後在運算元據,完成操作後在啟用對應的外來鍵和觸發器,下面的指令碼就是提供對整個使用者物件的外來鍵和觸發器的禁用和啟用指令碼:

--禁用外來鍵和觸發器

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;

/--啟用外來鍵和觸發器

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;

/

ORACLE 禁用 啟用外來鍵和觸發器

1 oracle資料庫中的外來鍵約束名都在表user constraints中可以查到。其中constraint type r 表示是外來鍵約束。2 啟用外來鍵約束的命令為 alter table table name enable constraint constraint name 3 禁用外來...

ORACLE 禁用 啟用外來鍵和觸發器

在很多資料庫維護工作中,經常會遇到對現有資料的匯入匯出的操作,但是資料庫中表與表之間有很多外間關係,不能直接的按維護要求對資料進行操作,所有需要對這些外來鍵和觸發器臨時的禁用,然後在運算元據,完成操作後在啟用對應的外來鍵和觸發器,下面的指令碼就是提供對整個使用者物件的外來鍵和觸發器的禁用和啟用指令碼...

ORACLE 禁用 啟用外來鍵和觸發器

1 oracle 資料庫中的外來鍵約束名都在表 user constraints 中可以查到。其中 constraint type r 表示是外來鍵約束。2 啟用外來鍵約束的命令為 alter table table name enable constraint constraint name 3 ...