触发器未从接口启动

时间:2009-09-01 04:56:07

标签: c# .net winforms ado.net

我在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

1 个答案:

答案 0 :(得分:1)

只有更改“ActualizadoPDA”列时才会触发此代码。如果您的网格具有与之前相同的“ActualizadoPDA”值,则触发器不会触发,即使它包含在更新语句中也是如此。

看起来你想要的是“IF EXISTS(SELECT 1 FROM Inserted WHERE ActualizadoPDA = 0)”。或者,如果您只想镜像该值,请完全避开IF语句并直接进行更新。如果所有内容都被正确编入索引,那么花在它上面的时间应该可以忽略不计。