我定义了这样的触发器:
CREATE TRIGGER [dbo].[trtablename]
ON [dbo].[tablename]
AFTER UPDATE
AS update tablename set row_version = row_version + 1
where id in (select id from inserted)
有一个字段叫做Row_Status
。应在不增加row_version
字段的情况下对其进行修改。如何在触发器中设置这样的条件?
您需要添加一个基于UPDATE()函数的条件,该函数可以在触发器中调用。
类似于:
CREATE TRIGGER [dbo].[trtablename] ON [dbo].[tablename]
AFTER UPDATE
AS
If not update(Row_Status)
begin
update tablename set row_version = row_version + 1
where id in (select id from inserted)
end
根据您的表/列和可能发生的UPDATE
操作,您可能需要增加检查的复杂性,但希望这能为您指明正确的方向。
使用UPDATE
函数的唯一不利之处是,如果在update语句中提到该字段,它将为true。即使它被设置为自己。
CREATE TRIGGER [dbo].[trtablename]
ON [dbo].[tablename]
AFTER UPDATE
AS
IF NOT UPDATE (Row_Status)
update tablename set row_version = row_version + 1
where id in (select id from inserted)