我有一个要求,我希望获取表中最后一次更新的行的编号,并且我希望将此编号用于其他操作。如何在SQL Server 2008中获取上次更新的行的编号
我没有像UpdatedOn这样的列,以便我可以引用该列。
那么有没有像scope_identity和@@身份(这给了我最后插入的行id的id)更新的任何函数也。
请帮助我一样。
我有一个要求,我希望获取表中最后一次更新的行的编号,并且我希望将此编号用于其他操作。如何在SQL Server 2008中获取上次更新的行的编号
我没有像UpdatedOn这样的列,以便我可以引用该列。
那么有没有像scope_identity和@@身份(这给了我最后插入的行id的id)更新的任何函数也。
请帮助我一样。
你可以做这样的事情
declare @mytable as TABLE
(
Id int
)
Update Table Set Name='Nitin'
OUTPUT INSERTED.Id into @mytable
where LastName='Varpe'
Select Id from @mytable
我认为你应该寻找触发器。去插入/更新触发器后。它总是给你最后插入/更新的记录,从叫插入动态表...
查询:
Select * from Inserted.
,让你需要的任何领域。
可以工作,但触发器不是一个好的永久解决方案。你(或其他人)会忘记它们存在,最好导致混淆。为什么不使用简单的存储过程来更新表格,然后执行其他工作。 [坏习惯踢:滥用触发器](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/12/bad-habits-to-kick-abusing-triggers.aspx) –
,因为你只在最后一个ID更新感兴趣,那么你可以简单地把它分配给一个变量SET
子句中:
DECLARE @LastID INT = NULL
UPDATE
SomeTable
SET
SomeColumn = 'SomeValue',
@LastID = ID
WHERE
SomeOtherColumn = 'SomeOtherValue'
伟大的解决方案,我会从来没有想过你可以用这种方式更新行值。谢谢。 –
时间创建这样一个专栏。顺便说一句,'scope_identity'works也只在这个范围内,而不是两天后,所以它也不会替换'CreatedAt'列。 –
你不能在行/列的基础上检索最新的更新信息,但是你可以在表格级别获得这个信息,然后按照这个[link] [1],但是我认为它对你没用,最好的解决方案是创建存储你更新信息的表格像userId,datetime等[1]:http://blog.sqlauthority.com/2009/05/09/sql-server-find-last-date-time-updated-for-any-table/ –