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

行が存在しない場合のOracle挿入

    これを実行すると、「INTOキーワードがありません」というエラーが表示されます。

    IGNOREはOracleのキーワードではないためです。それがMySQLの構文です。

    できることはMERGEを使用することです。

    merge into table1 t1
        using (select 'value1' as value1 ,value2 
               from table2 
               where table2.type = 'ok' ) t2
        on ( t1.value1 = t2.value1)
    when not matched then
       insert values (t2.value1, t2.value2)
    /
    

    Oracle 10gからは、両方のブランチを処理せずにマージを使用できます。 9iでは、「ダミー」のMATCHEDブランチを使用する必要がありました。

    より古いバージョンでは、唯一のオプションは次のいずれかでした:

    1. INSERTを発行する前に(またはサブクエリで)行の存在をテストします。
    2. PL / SQLを使用してINSERTを実行し、結果として生じるDUP_VAL_ON_INDEXエラーを処理します。


    1. SQL演算子

    2. SQL ServerでOPTION(MAXDOP 1)を使用する目的は何ですか?

    3. GoogleBigQueryをIRIVoracityソフトウェアに接続する

    4. MySQLでピボットテーブルを作成する方法