首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >触发器未从界面启动

问触发器未从界面启动
EN

Stack Overflow用户
提问于 2009-09-01 04:56:07
回答 1查看 79关注 0票数 0

我在SQL2005中有一个带有after update触发器的表。如果我直接使用SQL查询进行更新,则触发器运行正常。

此表使用dataset和tableadapter连接到DXDBGrid (开发人员。Express)。

如果用户更新网格,则会更新基础数据,但不会启动触发器。

我在表上有一个PK,在表适配器中有自动生成的更新命令,等等。一切正常,除了触发器没有启动...

为什么,哦为什么!?

提前谢谢。

富兰克林。

编辑:触发器代码:

ALTER TRIGGER dbo.trgUpdateZonasAsignadas ON dbo.ZonasAsignadas AFTER UPDATE AS BEGIN

代码语言:javascript
复制
IF NOT(UPDATE(ActualizadoPDA))
BEGIN
   UPDATE ZonasAsignadas SET ActualizadoPDA=0
      WHERE IdUsuarioZona IN (SELECT Inserted.IdUsuarioZona FROM Inserted)   
END

结束

EN

回答 1

Stack Overflow用户

发布于 2014-02-14 00:19:51

仅当"ActualizadoPDA“列更改时,此代码才会触发。如果您的网格附带了与以前相同的"ActualizadoPDA“值,则触发器将不会触发,,即使它包含在update语句中。

看起来你想要的是类似于“如果存在(SELECT 1 FROM Inserted ActualizadoPDA = 0)”。或者,如果您只想镜像该值,则完全避免使用if语句,只执行一次直接更新。如果所有内容都被正确索引,那么花在上面的时间应该可以忽略不计。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1360588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档