MERGE INTO语句避免重复插入

为了防止重复插入和重复更新,一般会在更新前进行读入,再进行更新,这个就会访问两次数据库,浪费资源和时间,而且因为是分两次读的数据库,可能在两次之间数据会发生变化。

使用MERGE INTO可以一次性判断应该更新还是插入,方法简单可靠。

以下是仅对一个表进行了的判断操作,MERGE INTO还可以判断操作多张表。

MERGE INTO WXAGENT A USING
(SELECT '"+agentcode+"' AS AGENTCODE,
 '"+agentName+"' AS NAME, '"+agentComCode+"' AS COMCODE,
 '"+agentComName+"' AS COMNAME
 FROM DUAL )B ON (A.AGENTCODE=B.AGENTCODE)
WHEN MATCHED THEN UPDATE SET
 A.NAME=B.NAME, A.COMCODE=B.COMCODE, A.COMNAME=B.COMNAME,
 A.UPDATEDATE=SYSDATE, A.AGENTTOTAL=A.AGENTTOTAL+1
 WHERE A.AGENTCODE=B.AGENTCODE
WHEN NOT MATCHED THEN INSERT  
 (A.AGENTCODE, A.NAME, A.COMCODE, A.COMNAME,
 A.UPDATEDATE, A.AGENTTOTAL)VALUES(
 B.AGENTCODE,B.NAME,B.COMCODE,B.COMNAME,SYSDATE,1)

posted @ 2015-05-11 14:34  沐阳浓  阅读(2180)  评论(0)    收藏  举报