我已经定义了我的触发器:
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
字段的情况下进行修改。如何在触发器中创建这样的条件?
答案 0 :(得分:2)
您需要根据可在触发器中调用的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
操作,您可能需要增加检查的复杂性,但希望这会指向正确的方向。
答案 1 :(得分:2)
使用UPDATE
函数的唯一缺点是,如果在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)