【发布时间】:2013-06-28 17:34:19
【问题描述】:
如果未找到更新匹配项,我需要使用一个序列来重新计算主键中的两个字段。是否仍然可以在这里使用 MERGE 语句?我试过 WHEN MATCHED THEN BEGIN,但 BEGIN 在这里无效。
具体来说,我有一对构成主键的数字。第一个是分组,第二个是组内的一系列项目。如果出现问题,该组以 99990 的形式出现,我需要将它与序列组合并使用序列来递增,然后将其拆分回来。因此,当组以 99990 进入时,我计算的组的范围可以从 99990 到 99999,那么序列号的范围将是从 00 到 99。
我想不出一种方法可以将其作为 INSERT 分配的一部分,而且我不知道如何让 MERGE 执行多个步骤,所以我猜我又回到了 UPDATE,如果@@ROWCOUNT = 0 开始。有人有更快的方法吗?
【问题讨论】:
-
您使用的是哪个 DBMS?从
@@rowcount判断可能是 SQL Server? -
正如您所猜测的,它是 SQL Server。
标签: sql sql-server merge