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

例外が発生した場合のOracleでの挿入の継続

    データ量が多い場合、PL / SQLでの行ごとの処理はおそらく遅すぎるでしょう。そのような状況では、ここで説明するDMLエラーロギングを使用できます

    CREATE TABLE raises (emp_id NUMBER, sal NUMBER 
       CONSTRAINT check_sal CHECK(sal > 8000));
    
    EXECUTE DBMS_ERRLOG.CREATE_ERROR_LOG('raises', 'errlog');
    
    INSERT INTO raises
       SELECT employee_id, salary*1.1 FROM employees
       WHERE commission_pct > .2
       LOG ERRORS INTO errlog ('my_bad') REJECT LIMIT 10;
    
    SELECT ORA_ERR_MESG$, ORA_ERR_TAG$, emp_id, sal FROM errlog;
    
    ORA_ERR_MESG$               ORA_ERR_TAG$         EMP_ID SAL
    --------------------------- -------------------- ------ -------
    ORA-02290: check constraint my_bad               161    7700
     (HR.SYS_C004266) violated
    


    1. ScaleGridはトップ100のクラウドサービスプロバイダーにランクイン

    2. 最も近い試合、パート1

    3. 複数の検索文字列を持つMySQLfind_in_set

    4. SQLでALTERTABLEステートメントを使用する方法は?