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 –