我有一个包含3列的表:id uniqueidentifier, rowversion bigint, data int
有时会更新数据值。当发生这种情况时,我想增加rowversion。我使用名为My_Table_RowVersion_Seq
的序列和以下触发器完成了此操作:
ALTER TRIGGER [dbo].[My_Table_UPDATE] ON [dbo].[My_Table]
FOR UPDATE AS BEGIN
SET NOCOUNT ON;
UPDATE [dbo].[My_Table] SET [dbo].[My_Table].[RowVersion] = NEXT VALUE
FOR dbo.My_Table_RowVersion_Seq
FROM INSERTED [updateData]
WHERE [updateData].[ID]=[dbo].[My_Table].[ID] END;
触发器和序列正常工作。当我更新行的数据列时,rowversion
会更改。但是,我一直在尝试使用rowversion
和OUTPUT
子句读出新的INPUT
值,但这不起作用。我似乎总是得到以前的值(更新前的值)。
以下是我正在使用的UPDATE
查询:
DECLARE @OutputTempTable TABLE (updatedversion bigint);
UPDATE My_Table SET data=12 OUTPUT Inserted.RowVersion INTO @OutputTempTable WHERE Id = '368B4035-3E8E-4AB3-8D7A-DCA6332AE718';
SELECT * FROM @OutputTempTable
查看OUTPUT
的{{3}}我可以看到在触发器触发之前收集了OUTPUT
数据。那么你怎么得到行的最终状态?你是否必须手动阅读它'?提前谢谢!