sql >> データベース >  >> RDS >> Oracle

DUP_VAL_ON_INDEXをトリガーする値をキャプチャします

    理想的には、DMLエラーログを使用することをお勧めします。例

    エラーログテーブルを作成する

    begin
      dbms_errlog.create_error_log( dml_table_name => 'EMPLOYEE',
                                    err_log_table_name => 'EMPLOYEE_ERR' );
    end;
    

    DMLエラーログを使用する

    BEGIN
      insert into employee( id )
        select id 
          from (select '01' id from dual
                union all
                select '02' from dual) 
        log errors into employee_err
            reject limit unlimited;
    END;
    

    失敗したすべての行について、これによりその行のデータがEMPLOYEE_ERRに記録されます。 例外と一緒にテーブル。次に、エラーログテーブルをクエリして、失敗した最初の行だけを取得するのではなく、すべてのエラーを確認できます。

    エラー・ログ表を作成するオプションがない場合は、一括操作でSQLからPL/SQLに移行できます。それは遅くなりますが、SAVE EXCEPTIONSを使用できます FORALLの句 繰り返し処理できる例外のネストされたテーブルを作成するステートメント。



    1. JavaでどのようにWebサイトを作成しますか?

    2. 合計を他の数値に乗算すると精度が低下する理由

    3. MySQLでINDEXとKEYを使用することの違いは何ですか?

    4. リレーショナルデータベースの設計シナリオ