触发器应用问题,高手继续来,找到现象了!

YSEE 2010-06-08 11:12:39
作业
UPDATE tb
SET A = dbo.C_Logic(ID, A)
WHERE ID > 0

触发器
declare @Anew int
declare @Aold int
select @Anew = A from inserted
select @Aold = A from deleted
if @Anew<>@Aold
update tb set B=getdate()

测试A
执行
UPDATE tb
SET A = dbo.C_Logic(ID, A)
WHERE ID = 200
A值改变,触发成功

测试B
UPDATE tb
SET A = dbo.C_Logic(ID, A)
WHERE ID > 0 and id < 500
A值改变,触发不生效,未写入日期。



那位高手 有办法解决啊?难道触发 不能对 批量修改?
...全文
59 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
YSEE 2010-06-08
  • 打赏
  • 举报
回复
用游标放在循环里? 生效吗?
YSEE 2010-06-08
  • 打赏
  • 举报
回复
用联合查询。是不是 就可以把 触发器删了?
YSEE 2010-06-08
  • 打赏
  • 举报
回复
1楼 是多行问题。

2楼

A、用游标 速度上会有影响多少? 3W条数据。

B、联合查询
不用修改我的触发是吧?
能解释下 这个 联合查询的用意吗?
永生天地 2010-06-08
  • 打赏
  • 举报
回复
原来是更需多行的问题
1、可以用游标
2、用联合查询
update t set t.B=getdate() from tb t ,inserted i,deleted D where t.id=i.id and i.id=D.id and i.A<>d.A
htl258_Tony 2010-06-08
  • 打赏
  • 举报
回复
在触发器中测试B的条件用的是变量还是常量?

22,294

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧