2
我對SQL很陌生,因此回答我的問題應該很容易。將3個步驟合併爲一個SQL腳本
這是我想做的事:
停用約束:
停用約束在數據庫:
begin for cur in (select fk.owner, fk.constraint_name , fk.table_name from all_constraints fk, all_constraints pk where fk.CONSTRAINT_TYPE = 'R' and pk.owner = 'USER1' and fk.R_CONSTRAINT_NAME = pk.CONSTRAINT_NAME) loop execute immediate 'ALTER TABLE '||cur.owner||'.'||cur.table_name||' MODIFY CONSTRAINT '||cur.constraint_name||' DISABLE'; end loop; end;
從表中刪除:
delete from USER_TEST.Table1; delete from USER_TEST.Table2; delete from USER_TEST.Table3;
- 個
重新激活約束:
begin for cur in (select fk.owner, fk.constraint_name , fk.table_name from all_constraints fk, all_constraints pk where fk.CONSTRAINT_TYPE = 'R' and pk.owner = 'USER1' and fk.R_CONSTRAINT_NAME = pk.CONSTRAINT_NAME) loop execute immediate 'ALTER TABLE '||cur.owner||'.'||cur.table_name||' MODIFY CONSTRAINT '||cur.constraint_name||' ENABLE NOVALIDATE'; end loop; end;
有誰知道如何將這些步驟合併成一個.sql
腳本,這樣我就可以在Oracle的SQLDeveloper跑的?或者更好的方式來執行從表中刪除?
,我會非常感激
取出最後的「末端」從1開始,第一個從3開始? –
但要非常小心 - 您有潛在的風險,無法在2之後重新激活約束條件。 –
謝謝!你有另一種方法來刪除他的表格內容嗎? – user2010988