これを実行すると、「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ブランチを使用する必要がありました。
より古いバージョンでは、唯一のオプションは次のいずれかでした:
- INSERTを発行する前に(またはサブクエリで)行の存在をテストします。
- PL / SQLを使用してINSERTを実行し、結果として生じるDUP_VAL_ON_INDEXエラーを処理します。