【发布时间】:2017-06-28 08:59:02
【问题描述】:
在目标表中有一个PK 列usr_cd,它在源表中不存在。因此,在从源插入目标时,我想生成一个唯一的代码。当我使用MERGE 语句时,如何实现这一点?
以下选项尝试失败:
- 序列对象:不能在
MERGE内部使用。 - SP 调用:无法在
MERGE中的INSERT中执行 SP。 - 函数调用:无济于事,因为我无法在 UDF 中使用序列对象。此外,如果我在表中存储一个唯一值,我将无法在 UDF 中进行更新。
- 在源表中添加代码:不能使用,因为有些记录会被更新,有些会被插入,因此会破坏顺序。
将默认值添加到目标表是一种选择,但我想避免这种情况。
让我知道在使用MERGE 时是否有其他方法可以实现这一点。
【问题讨论】:
-
我不明白。为什么不简单地使用标识列?这是解决此类问题的最佳方法。
-
@ZoharPeled 我不能使用身份,因为我需要单独跟踪这些插入的记录。
标签: sql-server sql-server-2008 sql-server-2012 unique-constraint sql-merge