@@IDENTITY
返回已插入的最后一行的ID
,我想检索最后一行的ID 已更新。
这是我的问题:
UPDATE [Table]
SET Active = 1,
Subscribed = 1,
RenewDate = GETDATE(),
EndDate = DATEADD(mm,1,getdate()),
WHERE SC = @SC
AND Service = @Ser
如何获取此更新行的ID?
该列名为TableID
,我在查询中没有使用它。
答案 0 :(得分:14)
由于没有插入ID,您无法检索ID .....
但你可以:
只需使用UPDATE
中的相同条件查询表格:
SELECT TableID
FROM dbo.Table
WHERE SC = @SC AND Service = @Ser -- just use the same criteria
使用OUTPUT
上的UPDATE
子句获取该信息:
UPDATE [Table]
SET Active = 1,
Subscribed = 1,
RenewDate = GETDATE(),
EndDate = DATEADD(mm,1,getdate())
OUTPUT Inserted.TableId -- output the TableID from the table
WHERE SC = @SC AND Service = @Ser
Read more about the OUTPUT
clause - 它可以在INSERT
和DELETE
上使用
答案 1 :(得分:7)
你可以试试这个:
OUTPUT INSERTED.TableID
你的代码中的看起来像这样:
UPDATE [Table]
SET Active = 1,
Subscribed = 1,
RenewDate = GETDATE(),
EndDate = DATEADD(mm,1,getdate()),
OUTPUT INSERTED.TableID
WHERE SC = @SC
AND Service = @Ser
希望这有帮助。
答案 2 :(得分:3)
我想你需要这个,
UPDATE [Table]
SET Active = 1,
Subscribed = 1,
RenewDate = GETDATE(),
EndDate = DATEADD(mm,1,getdate())
OUTPUT INSERTED.TABLE_PrimaryKeyID
WHERE SC = @SC
AND Service = @Ser
主要来源:here
答案 3 :(得分:0)
尝试使用 select @@ identity给出特定会话的最新更新标识 (要么) select scope_identity为特定范围提供上次更新的标识 (要么) select ident_curr(' tablename')给出最后更新的身份,无论会话或范围如何,但是对于该特定的表。