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

OracleはMySQLINSERTIGNOREと同等ですか?

    MERGEステートメントを確認してください。これはあなたが望むことをするはずです-それはWHEN NOT MATCHED これを行う句。

    ただし、Oracleが真のVALUES()句をサポートしていないため、固定値を持つ単一レコードの構文はかなり不器用です。

    MERGE INTO your_table yt
    USING (
       SELECT 42 as the_pk_value, 
              'some_value' as some_column
       FROM dual
    ) t on (yt.pk = t.the_pke_value) 
    WHEN NOT MATCHED THEN 
       INSERT (pk, the_column)
       VALUES (t.the_pk_value, t.some_column);
    

    別のアプローチ(たとえば、別のテーブルから一括読み込みを行う場合)は、Oracleの「エラーロギング」機能を使用することです。ステートメントは次のようになります:

     INSERT INTO your_table (col1, col2, col3)
     SELECT c1, c2, c3
     FROM staging_table
     LOG ERRORS INTO errlog ('some comment') REJECT LIMIT UNLIMITED;
    

    その後、エラーをスローしたはずのすべての行がテーブルerrlogで利用可能になります 。そのerrlogを作成する必要があります DBMS_ERRLOG.CREATE_ERROR_LOGを使用して挿入を実行する前に、テーブル(または選択した名前)を手動で実行します 。

    詳細はマニュアルをご覧ください



    1. MariaDBでのSYSDATE()のしくみ

    2. DBAとしてのあなたの価値を財務幹部に明確に伝える方法

    3. SQL Serverのビューの列を参照する外部キーを使用できますか?

    4. SSRSのドロップダウンリストパラメータのデフォルト値を--All--にするにはどうすればよいですか?