触发器的小示例

sql server2000中的trigger中没有before、for each row、new等关键字。下面我写了个,能实现你的功能,只是不知道有没有性能更好的写法。期待更佳的....

if exists(select * from sysobjects where name='Insert_Or_Update_sal')
   drop trigger Insert_Or_Update_sal
go
CREATE TRIGGER Insert_Or_Update_sal
  ON TEACHER 
 FOR insert,update  
 AS
 BEGIN 
      declare @job char(8),@sal numeric(7,2),@eno numeric(4)
     --inserted是insert或update触发表临时表,参考下面帮助。
      select @eno=eno,@job=job,@sal=sal from inserted 
      if @job='教授' and @sal<4000
         update teacher set sal=4000 where eno=@eno
   
    --下面的两句也可能完成这个功能,只是性能低一些。
    -- if exists(select * from inserted where job='教授' and sal< 4000)
    -- update TEACHER set sal=4000 where job='教授' AND sal<4000    
 END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值