我在SQL 2005中有一个带有更新后触发器的表。如果我直接使用SQL QUERY更新,则触发器运行正常。
此表使用数据集和tableadapter连接到DXDBGrid(Dev.Express)。
如果用户更新网格,则会更新基础数据,但不会启动触发器。
我在表上有PK,在表适配器中自动生成UPDATE命令等。一切正常,但触发器没有启动...
为什么,为什么!?
提前致谢。
富兰克林。
编辑:触发代码:
ALTER TRIGGER [dbo]。[trgUpdateZonasAsignadas] ON [dbo]。[ZonasAsignadas] 更新后 如 BEGIN
IF NOT(UPDATE(ActualizadoPDA))
BEGIN
UPDATE ZonasAsignadas SET ActualizadoPDA=0
WHERE IdUsuarioZona IN (SELECT Inserted.IdUsuarioZona FROM Inserted)
END
END
答案 0 :(得分:1)
只有更改“ActualizadoPDA”列时才会触发此代码。如果您的网格具有与之前相同的“ActualizadoPDA”值,则触发器不会触发,即使它包含在更新语句中也是如此。
看起来你想要的是“IF EXISTS(SELECT 1 FROM Inserted WHERE ActualizadoPDA = 0)”。或者,如果您只想镜像该值,请完全避开IF语句并直接进行更新。如果所有内容都被正确编入索引,那么花在它上面的时间应该可以忽略不计。