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

Posted Lulus

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了特殊存储过程——触发器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

以上是关于特殊存储过程——触发器Trigger的主要内容,如果未能解决你的问题,请参考以下文章

MySQL数据库8(二十七)触发器

MySQL数据库(32):触发器 trigger

mysql触发器(Trigger)的作用

mysql触发器(Trigger)简明总结和使用实例

SQL Server 创建触发器(trigger)

SQL Server 创建触发器(trigger)