Sql 返回MERGE命令中插入的更新记录的ID
我需要在表中插入/更新项并返回记录的ID。这是我的T-SQL:Sql 返回MERGE命令中插入的更新记录的ID,sql,sql-server,merge,Sql,Sql Server,Merge,我需要在表中插入/更新项并返回记录的ID。这是我的T-SQL: BEGIN MERGE [AgentDumps] WITH (HOLDLOCK) AS Target USING (SELECT @AgentID) AS Source (AgentID) ON (target.AgentID = source.AgentID) WHEN MATCHED THEN UPDATE Set DumpData = @DumpData,
BEGIN
MERGE [AgentDumps] WITH (HOLDLOCK) AS Target
USING (SELECT @AgentID) AS Source (AgentID)
ON (target.AgentID = source.AgentID)
WHEN MATCHED THEN
UPDATE
Set DumpData = @DumpData,
UpdateTime = getdate()
WHEN NOT MATCHED THEN
INSERT
([AgentID],
[DumpData]
)
VALUES
(
@AgentID,
@DumpData
);
SELECT CAST(scope_identity() AS int)
END
这仅在插入新记录时有效。但是,如果更新了现有的查询,那么查询将返回null。我试图在更新命令中添加输出INSERTED.ID:
BEGIN
MERGE [AgentDumps] WITH (HOLDLOCK) AS Target
USING (SELECT @AgentID) AS Source (AgentID)
ON (target.AgentID = source.AgentID)
WHEN MATCHED THEN
UPDATE
Set DumpData = @DumpData,
UpdateTime = getdate()
OUTPUT INSERTED.ID
WHEN NOT MATCHED THEN
INSERT
([AgentID],
[DumpData]
)
VALUES
(
@AgentID,
@DumpData
);
SELECT CAST(scope_identity() AS int)
END
但是SQL返回:关键字“WHEN”附近的语法不正确。move
output
到merge语句的末尾像个charmmoveoutput
到merge语句的末尾像个charm