Sql server 获取SQL Server中上次更新的行的标识
Sql server 获取SQL Server中上次更新的行的标识,sql-server,stored-procedures,sql-update,Sql Server,Stored Procedures,Sql Update,@@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,我在查询中没有使用它。您可以尝试使用以下方法:
@@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
,我在查询中没有使用它。您可以尝试使用以下方法:
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
希望这有帮助。您无法检索ID,因为没有插入ID 但你可以:
更新中相同的条件查询表即可:
SELECT TableID
FROM dbo.Table
WHERE SC = @SC AND Service = @Ser -- just use the same criteria
UPDATE
上的OUTPUT
子句获取该信息:
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
在Technet上-它可以用于插入和删除
UPDATE [Table]
SET Active = 1,
Subscribed = 1,
RenewDate = GETDATE(),
EndDate = DATEADD(mm,1,getdate())
OUTPUT INSERTED.TABLE_PrimaryKeyID
WHERE SC = @SC
AND Service = @Ser
主要来源:尝试使用
选择@@identity为特定会话提供上次更新的标识
(或)
select scope_identity为特定作用域提供上次更新的标识
(或)
select ident_curr('tablename')给出上次更新的标识,与会话或作用域无关,但用于该特定表。如何使用相同的where子句触发select?请注意,输出前没有逗号