特殊存储过程——触发器Trigger

触发器类型

insert 触发器
delete 触发器
update 触发器

Inserted和Deleted两个临时表的作用

Inserted:对于插入记录操作来说,插入表里存放的是要插入的数据;对于更新记录操作来说,插入表里存放的是要更新的记录。
Deleted:对于更新记录操作来说,删除表里存放的是被更新记录;对于删除记录操作来说,删除表里存入的是被删除的旧记录。

 
1

 

参考:http://www.cnblogs.com/liushuijinger/archive/2012/06/10/2543941.html

触发器写法

CREATE TRIGGER  Trigger_Name --触发器名,在一个数据库中触发器名是唯一的。
   ON Table_Name | View_Name --触发器所在的表或者视图。 AFTER(FOR)|Instead Of INSERT,DELETE,UPDATE --定义成AFTER或Instead Of类型的触发器。 --AFTER跟FOR相同,不可在视图上定义AFTER触发器 -- 后面是触发器被触发的条件,最少有一个,可以邮多个。如果有多个用逗号分开,顺序无要求。 AS --触发器要执行的操作 BEGIN --BEGIN跟END组成一个代码块,可以写也可以不写,如果触发器中执行的SQL语句比较复杂,用BEGIN和END会让代码更加整齐,更容易理解。 END GO --GO就代表结操作完毕 

例子

create trigger trig_insert_student
on student for insert as declare @number int -- 从inserted临时表中获取记录值 select @number=StudentNumber from inserted --临时表inserted update student set Name='触发器修改' where StudentNumber=@number go create trigger trig_insert_transInfo on transInfo for insert as declare @_transType char(4), --定义变量 @_transMoney money, @_cardID char(10), @balance money --所剩余额 -- 从inserted临时表中获取记录值 select @_transType = transType, @_transMoney = transMoney, @_cardID = cardID from inserted --临时表inserted if(@_transType = '支取') update bank set currentMoney=currentMoney-@_transMoney where cardID = @_cardID; else update bank set currentMoney=currentMoney+@_transMoney where cardID = @_cardID; --显示交易金额 print '交易成功! 交易金额:' + convert(varchar(20),@_transMoney) --显示所剩余额 select @balance = currentMoney from bank where cardId = @_cardID print '卡号:'+@_cardID + ' 余额:'+convert(varchar(20),@balance); go 

参考:http://www.cnblogs.com/xugang/archive/2010/02/20/1669619.html

转载于:https://www.cnblogs.com/Lulus/p/7874327.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值