私は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
これらの手順を 1 つのスクリプトにまとめて、Oracle SQLDeveloper で実行できるようにする方法を知っている人はいますか? それとも、テーブルからの削除を実行するためのよりエレガントな方法でしょうか?
とても感謝しています