我目前正在使用IBM dashDB,如果根据某些条件该行尚不存在,我需要知道用于插入新行的sql语句。所以,像这样:
INSERT INTO tablexyz (Col1, Col2, Col3) VALUES (val1, val2, val3) IF NOT EXIST (SELECT * FROM tablexyz WHERE val1 = x, val2 = y)
我该怎么做?
答案 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);