在更新时触发(不包括某些字段的更改)



我定义了这样的触发器:

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)

最新更新