我想将一个表合并bar
到另一个表foo
中,同时我必须为列分配一个唯一值messagenr
。这是我这样做的尝试(sql-server):
MERGE foo AS target
using bar AS source
ON target.message LIKE source.message
WHEN NOT matched BY target THEN
INSERT (messagenr,
language,
message)
VALUES ((SELECT Max(messagenr)
FROM foo)
+ 1,
'EN',
source.message);
当然这是行不通的。messagenr
对于插入的每个新数据集,我都得到完全相同的值。我不能修改表结构本身,所以我必须使用给定的结构。
如何messagenr
在目标表中的每个新数据集中获取 UNIQUE 值?
让我设置下一个示例:
由于您不能
messagenr
在交易中增加价值,而您的 MERGE 语句只插入值,也许您可以使用另一种方法。您可以使用 CTE 或子查询以这种方式枚举返回的行:
现在您可以使用之前的查询插入新值:
这是最终结果:
dbfiddle在这里