1
我必須在oracle數據庫中插入一些數據,而無需事先檢查它是否已存在。Oracle數據庫插入和重複密鑰無關
是否存在任何方式,對oracle進行轉換以捕獲查詢內部的異常並處理它以便不返回任何異常?
這將是MySQL的風格完美類似
insert .... on duplicate key a=a
我必須在oracle數據庫中插入一些數據,而無需事先檢查它是否已存在。Oracle數據庫插入和重複密鑰無關
是否存在任何方式,對oracle進行轉換以捕獲查詢內部的異常並處理它以便不返回任何異常?
這將是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;
哪個Oracle版本? 11.2爲此提出了一個提示。 –
哪些提示已經介紹? – rodi
請參閱:http://docs.oracle.com/cd/E11882_01/server.112/e26088/sql_elements006.htm#CHDEGDDG –