我在SQL2005中有一个带有after update触发器的表。如果我直接使用SQL查询进行更新,则触发器运行正常。
此表使用dataset和tableadapter连接到DXDBGrid (开发人员。Express)。
如果用户更新网格,则会更新基础数据,但不会启动触发器。
我在表上有一个PK,在表适配器中有自动生成的更新命令,等等。一切正常,除了触发器没有启动...
为什么,哦为什么!?
提前谢谢。
富兰克林。
编辑:触发器代码:
ALTER TRIGGER dbo.trgUpdateZonasAsignadas ON dbo.ZonasAsignadas AFTER UPDATE AS BEGIN
IF NOT(UPDATE(ActualizadoPDA))
BEGIN
UPDATE ZonasAsignadas SET ActualizadoPDA=0
WHERE IdUsuarioZona IN (SELECT Inserted.IdUsuarioZona FROM Inserted)
END结束
发布于 2014-02-14 00:19:51
仅当"ActualizadoPDA“列更改时,此代码才会触发。如果您的网格附带了与以前相同的"ActualizadoPDA“值,则触发器将不会触发,,即使它包含在update语句中。
看起来你想要的是类似于“如果存在(SELECT 1 FROM Inserted ActualizadoPDA = 0)”。或者,如果您只想镜像该值,则完全避免使用if语句,只执行一次直接更新。如果所有内容都被正确索引,那么花在上面的时间应该可以忽略不计。
https://stackoverflow.com/questions/1360588
复制相似问题