MYSQL-触发器

   触发器是数据库系统中的一种机制,可以根据某一张表的增、删、改操作时作出一些特定的功能处理。触发器创建在表的基础上,类型有三种,增、删、改,也就是说,一个表最多只能创建三个触发器。同时,触发器是可以联动的。比如说销售记录插入一条销售信息,则销售记录表的insert触发器触发,针对商品表的库存进行修改。

  语法 create trigger  t_xiaoshou after  insert/update/delete on 表名

              for each row

              begin

                      //业务处理

              end;

在触发中new表示新添加的数据行  old 表示删除的数据行。

insert 时只有new 数据行

delete时只有 old 数据行

update时 两个数据行都有,更改数据时,先把这一行数据删除,数据行存在old里面,然后再插入修改后的数据行,则插入的数据行保存在new 里面。

 

案例一:insert触发器

/*在销售表中添加insert触发器,触发时修改商品表的库存*/

DELIMITER$$

create trigger t_orderList AFTER insert on orderList

for each row

begin

    /*取商品编号 及 数量  然后根据商品编号把商品表的库存减少,减少数量*/

    update goods set kuchun = kuchun-new.num where goods.id = new.gid;

end$$;

 

案例二:delete触发器

DELIMITER$$

create trigger t_student AFTER delete on student

for each row

begin

    /*取删除的学员信息,插入到毕业学员信息表中  old行保存的是删除的学员信息*/

    insert into biyeiStudent                                     values(old.studentno,old.name,old.sex,old.phone,old.birthday,old.address,old.email);

end$$;

 

案例三:update 触发器 当更改了库存后,触发,重新计算商品的总价值。

delimiter $$

create trigger t_goods before update on goods

for each row

begin

   /*判断是哪一列进行了修改*/

   if old.kuchun != new.kuchun then

      /*因为是同一个表,所以只要设置新行里面值就可以。*/

   set new.totalPrice = new.kuchun*new.inPrice;

   end if;

end;

$$;

posted @ 2017-03-24 09:11  飞凡借箭  阅读(201)  评论(0)    收藏  举报