在Scope_IDENTITY中使用MERGE INTO
|
当
Merge into
用以下语句做insert
时,Scope_Identity
返回正确的代理键信息。但是,当执行update
时,Scope_Identity
和@@Identity
都将返回下一个可用的代理键。当我加上output
时,update
和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
)
output CurrentSet.*, @Surrogate_KEY ;
print @Surrogate_KEY
print @@IDENTITY
print SCOPE_IDENTITY()
没有找到相关结果
已邀请:
2 个回复
盛虱
伪表:
这将返回语句末尾表中(对于受影响的行)表中的任何值。
缉康怪