ORACLE 禁用/啟用外來鍵和觸發器
ORACLE 禁用/啟用外來鍵和觸發器
1、ORACLE資料庫中的外來鍵約束名都在表user_constraints中可以查到。其中constraint_type='R'表示是外來鍵約束。
2、啟用外來鍵約束的命令為:alter table table_name enable constraint constraint_name
3、禁用外來鍵約束的命令為:alter table table_name disable constraint constraint_name
4、然後再用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'
ORACLE 禁用/啟用外來鍵和觸發器
在很多資料庫維護工作中,經常會遇到對現有資料的匯入匯出的操作,但是資料庫中表與表之間有很多外間關係,不能直接的按維護要求對資料進行操作,所有需要對這些外來鍵和觸發器臨時的禁用,然後在運算元據,完成操作後在啟用對應的外來鍵和觸發器,下面的指令碼就是提供對整個使用者物件的外來鍵和觸發器的禁用和啟用指令碼:
--禁用指令碼
SET SERVEROUTPUT ON SIZE 100000
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 100000
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;
/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/196700/viewspace-1163237/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle中查詢、禁用、啟用、刪除表外來鍵Oracle
- Oracle '批量'禁用外來鍵的儲存過程Oracle儲存過程
- MySQL禁用恢復外來鍵約束MySql
- 4.2.6 禁用和啟用元件的Oracle重啟管理元件Oracle
- Oracle觸發器Oracle觸發器
- Oracle觸發器觸發級別Oracle觸發器
- mysql啟動和關閉外來鍵約束MySql
- Oracle中觸發器的應用 (zt)Oracle觸發器
- oracle儲存過程和觸發器Oracle儲存過程觸發器
- ORACLE DDL觸發器Oracle觸發器
- Oracle之觸發器Oracle觸發器
- oracle ddl 觸發器Oracle觸發器
- Oracle觸發器6(建立系統事件觸發器)Oracle觸發器事件
- 根據業務寫觸發器(oracle觸發器片)觸發器Oracle
- 使用系統級觸發器禁用DDL語句觸發器
- Oracle 外來鍵查詢sqlOracleSQL
- oracle 觸發器 和 常用內建程式包Oracle觸發器
- win10系統中啟用和禁用粘滯鍵的方法Win10
- Oracle根據主鍵查詢外來鍵Oracle
- ORACLE觸發器詳解Oracle觸發器
- Oracle登陸觸發器Oracle觸發器
- oracle 觸發器-表同步Oracle觸發器
- Oracle 登入觸發器Oracle觸發器
- oracle 觸發器 client 事件Oracle觸發器client事件
- SQL的主鍵和外來鍵約束SQL
- Oracle開發基礎-觸發器Oracle觸發器
- oracle 批量刪除觸發器Oracle觸發器
- oracle 觸發器的例項Oracle觸發器
- Oracle 觸發器 限制DDL操作Oracle觸發器
- 行為和觸發器觸發器
- oracle外來鍵約束的總結Oracle
- Oracle 外來鍵的級聯處理Oracle
- 從知乎瞭解到,為什麼Mysql禁用儲存過程、外來鍵和級聯?MySql儲存過程
- 新的主鍵和外來鍵的語法
- 【實驗】【外來鍵】小議外來鍵約束對應用程式的影響
- Linux 中如何啟用和禁用網路卡?Linux
- sqlserver外來鍵SQLServer
- Oracle 觸發器中使用遊標Oracle觸發器