请问使用触发器的时候,能否使特定字段的更新不触发触发器

cowboy_ls 2004-05-05 01:29:06
student 表中有4个字段ID,NAMEM,CLASS,STATUS。
能否判断我在更新STATUS的时候不触发触发器,
如果我更新的是其他的字段(ID,NAME,CLASS)的时候就触发触发器呢!
望高手解答
...全文
56 17 点赞 打赏 收藏 举报
写回复
17 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
cowboy_ls 2004-05-05
回复人: internetcsdn(公元1979年8月10日) ( ) 信誉:100
楼上:

你的语句如果在同时更新status,CLASS会不会触发啊?

这个好象可以分2步做
  • 打赏
  • 举报
回复
internetcsdn 2004-05-05
大家都有理
  • 打赏
  • 举报
回复
8992026 2004-05-05
列级触发器?
  • 打赏
  • 举报
回复
zjcxc 元老 2004-05-05
楼主的要求是: 在更新STATUS的时候不触发触发器

不管你更新了几个字段,只要更新的字段中包含status,都满足上述条件.
  • 打赏
  • 举报
回复
cowboy_ls 2004-05-05
谢谢邹大哥和CSDN上的朋友们
我马上散分
  • 打赏
  • 举报
回复
carl2004 2004-05-05
可以建立一个列级触发器,基本语法可以查阅SQL联机帮助。

  • 打赏
  • 举报
回复
8992026 2004-05-05
如果:
update student
set CLASS=1,
STATUS=0
where id=1

update(status)=TRUE
update(CLASS)=TRUE
我理解是要处理的,否则,对CLASS的修改变成有时处理有时不处理了。
楼主没有说清楚,看搂主自己选择了


  • 打赏
  • 举报
回复
internetcsdn 2004-05-05
楼上:

你的语句如果在同时更新status,CLASS会不会触发啊?
  • 打赏
  • 举报
回复
zjcxc 元老 2004-05-05
我的也没错啊,楼主说是更新stauts的时候不触发,当然应该是:

if update(status) --如果更新的是status,则直接返回
return

  • 打赏
  • 举报
回复
life583 2004-05-05
可以啊!下面的例子是仅在ID字段update时触发,自己改一下,就可以满足你的要求了。
create trigger tu_student on
tu_student for UPDATE as
begin

if update(ID)
begin
......
end
return
end
go
  • 打赏
  • 举报
回复
internetcsdn 2004-05-05
真快,
又学到了
  • 打赏
  • 举报
回复
zjcxc 元老 2004-05-05
create trigger tr_update on student
for update
as
if update(status) --如果更新的是status,则直接返回
return

--这后面是你正常的处理语句
  • 打赏
  • 举报
回复
8992026 2004-05-05
斑竹的判断错了,可能几个一起更新,应该触发
  • 打赏
  • 举报
回复
8992026 2004-05-05
create trigger tr_student_update
on student
for update
as
if not update(ID) and not update(NAME) and not update(CLASS)
return
....
go
  • 打赏
  • 举报
回复
zjcxc 元老 2004-05-05
create trigger tr_update on student
for update
as
if update(status) --如果更新的是status,则直接返回
return
  • 打赏
  • 举报
回复
internetcsdn 2004-05-05
问得好,
学习
  • 打赏
  • 举报
回复
cowboy_ls 2004-05-05
这个触发器是一个UPDATE触发器
  • 打赏
  • 举报
回复
相关推荐
发帖
MS-SQL Server
加入

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2004-05-05 01:29
社区公告
暂无公告