我有一个 DB2 数据库表
Users
------
userId: BIGINT
我需要从表中为用户返回一行。如果该行不存在,则应将其插入并返回。是否有一个语句可以做到这一点
MERGE
当 ID 不存在于表中时,您可以使用插入,如下所示:
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
还有一个语句允许您获取插入到表中的内容(data-change-table-reference
在INSERT
页面上搜索):
SELECT *
FROM NEW TABLE (
INSERT INTO Users(userId)
VALUES (123), (234)
)
不幸的是,您不能将这两个语句组合在一起以在一个语句中完成所有操作。我认为,如果您需要唯一值,您可以做的最好的事情就是将INSERT
方法与复合 SQL一起执行并处理-803
SQLCODE。