sql – DB2有“插入或更新”语句吗?

从我的代码(Java),我想确保在我的代码执行后数据库(DB2)中存在一行。

我的代码现在做一个选择,如果没有返回结果,它做一个插入。我真的不喜欢这个代码,因为它暴露了在多线程环境中运行时的并发问题。

我想做的是将这个逻辑放在DB2而不是我的Java代码中。
DB2是否具有insert-or-update语句?或任何类似的,我可以使用?

例如:

insertupdate into mytable values ('myid')

另一种做法可能是总是做插入和捕获“SQL代码-803主键已经存在”,但我想避免,如果可能的话。

是的,DB2有MERGE语句,它将执行一个UPSERT(更新或插入)。

MERGE INTO target_table USING source_table ON match-condition
{WHEN [NOT] MATCHED 
          THEN [UPDATE SET ...|DELETE|INSERT VALUES ....|SIGNAL ...]}
[ELSE IGNORE]

看到:

http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=/com.ibm.db2.udb.admin.doc/doc/r0010873.htm

http://stackoverflow.com/questions/330241/does-db2-have-an-insert-or-update-statement

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:sql – DB2有“插入或更新”语句吗?