获取触发器更新的结果

时间:2016-03-31 14:41:45

标签: sql sql-server triggers

我有一个包含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会更改。但是,我一直在尝试使用rowversionOUTPUT子句读出新的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数据。那么你怎么得到行的最终状态?你是否必须手动阅读它'?提前谢谢!

0 个答案:

没有答案