当Merge into做一个insert用下面的语句,Scope_Identity返回正确的代理键信息.但是当update执行两者Scope_Identity并@@Identity返回下一个可用的代理键时.当我添加的时候output,我update和两个都得到了null insert.
如何在update和insert?上返回代理键?
DECLARE @Surrogate_KEY bigint
MERGE INTO [dbo].[MyTable] ChangeSet
USING (SELECT @NaturalKey1 AS NaturalKey1,
@NaturalKey2 AS NaturalKey2,
@NaturalKey3 AS NaturalKey3,
@Surrogate_KEY AS Surrogate_KEY) CurrentSet
ON ChangeSet.NaturalKey1 = CurrentSet.NaturalKey1 AND
ChangeSet.NaturalKey2 = CurrentSet.NaturalKey2 AND
ChangeSet.NaturalKey3 = CurrentSet.NaturalKey3
WHEN MATCHED THEN
UPDATE SET blah, blah, blah
WHEN NOT MATCHED
THEN INSERT VALUES
(
blah, blah, blah
) …Run Code Online (Sandbox Code Playgroud)