すでに存在するかどうかを事前に確認せずに、Oracle DBにデータを挿入する必要があります。
クエリ内の例外をキャッチし、それを処理して例外を返さないようにするためのオラクルのトランジションは、何らかの方法で存在しますか?
次のようなmysqlのスタイルで完璧なものになるでしょう
insert .... on duplicate key a=a
すでに存在するかどうかを事前に確認せずに、Oracle DBにデータを挿入する必要があります。
クエリ内の例外をキャッチし、それを処理して例外を返さないようにするためのオラクルのトランジションは、何らかの方法で存在しますか?
次のようなmysqlのスタイルで完璧なものになるでしょう
insert .... on duplicate key a=a
使用できますMERGE
。ただし、構文は通常の挿入とは少し異なります。
MERGE INTO test USING (
SELECT 1 AS id, 'Test#1' AS value FROM DUAL -- your row to insert here
) t ON (test.id = t.id) -- duplicate check
WHEN NOT MATCHED THEN
INSERT (id, value) VALUES (t.id, t.value); -- insert if no duplicate
PL/SQL を使用でき、重複したくない列に一意のインデックスがある場合は、例外をキャッチして無視できます。
begin
insert into your_table (your_col) values (your_value);
exception
when dup_val_on_index then null;
end;