用于“插入行(如果尚未存在)”的IBM dashDB sql语句

时间:2016-10-28 20:17:40

标签: sql if-statement insert dashdb

我目前正在使用IBM dashDB,如果根据某些条件该行尚不存在,我需要知道用于插入新行的sql语句。所以,像这样:

INSERT INTO tablexyz (Col1, Col2, Col3) VALUES (val1, val2, val3) IF NOT EXIST (SELECT * FROM tablexyz WHERE val1 = x, val2 = y)

我该怎么做?

1 个答案:

答案 0 :(得分:1)

根据上下文,您可以在(Col1,Col2)上定义主键或唯一索引,如果存在重复,则使普通插入失败。或者定义运行Select的过程并检查返回码。但是,与SQL示例最匹配的是MERGE语句,如

MERGE into tablexyz
using ( values (1,2,9) ) newdata(val1,val2,val3)
on tablexyz.Col1 = newdata.val1 and tablexyz.Col2 = newdata.val2
when not matched then insert values(val1,val2,val3);