在轉移資料庫,進行資料匯入的時候,遇到一件麻煩事,就是程式設計客棧表間外來鍵約束的存在,導致insert頻頻報錯,批量執行sql語句又是順序執行,沒辦法我只好手動輸入。
然後輸入到一半靈光一閃,為什麼不先把外來鍵約束全部禁用先呢?
於是我百度到以下資料:
oracle 刪除(所有)約束 禁用(所有)約束 啟用(所有)約束
執行以下sql生成的語句即可
1刪除所有外來鍵約束
select 'alter table '||table_name||' drop constraint '||constraint_name||';' from user_constraints where constraint_type='r'
2禁用所有外來鍵約束
select 'alter table '||table_name||' disable constraint '||constraint_name||';' from user_constraints where constraint_type='r'
3啟用所有外來鍵約束
select 'alter table '||table_name||' enable constraint '||constraint_name||';' from user_constraints where constraint_type='r'
在sql plus中輸入語句後,生成了很多語句,這些語句其實是沒執行的,複製下來執行一遍就好了。
然後我們可以根據這個指令碼一樣的sql語句進行拼裝,得到我們需要的語句:
禁用所有外來鍵約束:
select 'alter table "qianhai"."'||table_name||'" modify constraint "'||constraint_name||'" disable;' from user_cons程式設計客棧traints where constraint_type='r'
啟用所有外來鍵約束:
select 'alter table "qianhai"."'||table_name||'" modify constraint "'||constraint_name||'" enable;' from user_constraints wwww.cppcns.comhere constraint_type='r';
Oracle批量執行SQL語句
1.在plsql之類的工具中把語句塊寫在begin end之間,如 begin insert into table values insert into table values insert into table values insert into table values end 記住在end...
Oracle批量執行SQL語句
1.在plsql之類的工具中把語句塊寫在begin end之間,如 begin insert into table values insert into table values insert into table values insert into table values end 記住在end...
SQL 語句執行批量替換操作
use test db goupdate tb test set lastname replace lastname,k g 將 2012.04.05 型別的日期改為 2012 04 05 update device info set 檢定有效期 replace cast 檢定有效期 as varc...