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后面的条件包含非主键字段就会有可能出现主键冲突,
因为可能更新的时候与表中的某一条数据只有非主键字段不同,然后就会更新不到,就会执行插入当插入的时候就有可能刚好主键相同就会出现主键冲突。
本文探讨了在SQL中使用更新语句时可能遇到的问题,特别是当更新条件包含非主键字段时,可能会因主键冲突导致错误。文章详细解释了这一现象的原因,并提供了避免此类问题的方法。
249

被折叠的 条评论
为什么被折叠?



