2

我已经这样定义了我的触发器:

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字段的情况下进行修改。如何在触发器中创建这样的条件?

4

2 回答 2

3

您需要基于可在触发器中调用的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可能发生的操作,您可能不得不增加检查的复杂性,但希望这会为您指明正确的方向。

于 2013-07-05T11:33:35.260 回答
2

使用该UPDATE函数的唯一缺点是,如果在更新语句中甚至提到了该字段,它将是正确的。即使它被设置为自身。

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)
于 2013-07-05T11:40:06.537 回答