我有一个DB2数据库表
Users
------
userId: BIGINT
我需要从表中为用户返回一行。如果该行不存在,则应插入并返回。 是否有一个声明可以做到这一点
答案 0 :(得分:3)
如果表中不存在ID,您可以使用MERGE
进行插入,如下所示:
MERGE INTO Users u (userId)
USING (VALUES (123)) AS m (userId)
ON u.userId = m.userId
WHEN NOT MATCHED THEN
INSERT (userID)
VALUES (m.userId)
ELSE IGNORE
还有一个声明允许您获取插入表格的内容(在INSERT
页面上搜索data-change-table-reference
):
SELECT *
FROM NEW TABLE (
INSERT INTO Users(userId)
VALUES (123), (234)
)
不幸的是,您不能将这两个语句组合在一个语句中。我认为,如果您需要唯一值,您可以做的最好的事情就是使用INSERT
方法和compound SQL并处理-803
SQLCODE。