oracle 存在更新不存在插入

UPDATE TEST SET NAME= V_NAME WHERE ID = V_ID; -- 先更新
IF SQL%NOTFOUND THEN -- 判断更新结果
	INSERT INTO TEST(ID,NAME)VALUES(V_ID,V_NAME); -- 如果没有更新到数据则插入
END IF;

这里会遇到一个坑

如果更新SQL后面的条件包含非主键字段就会有可能出现主键冲突,

因为可能更新的时候与表中的某一条数据只有非主键字段不同,然后就会更新不到,就会执行插入当插入的时候就有可能刚好主键相同就会出现主键冲突。

猜你喜欢

转载自blog.csdn.net/minolk/article/details/87448638