2

私はSQLにかなり慣れていないので、質問に答えるのはかなり簡単です。

これが私がやりたいことです:

  1. 拘束を非活動化:

    データベースの制約を無効にします。

    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;  
    
  2. テーブルから削除:

    delete from USER_TEST.Table1;                
    delete from USER_TEST.Table2;               
    delete from USER_TEST.Table3; 
    
  3. 拘束を再アクティブ化:

    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 で実行できるようにする方法を知っている人はいますか? それとも、テーブルからの削除を実行するためのよりエレガントな方法でしょうか?

とても感謝しています

4

1 に答える 1