美文网首页
MySql 触发器

MySql 触发器

作者: zshanjun | 来源:发表于2017-03-07 15:03 被阅读112次

触发器是MySQL响应一下任意语句而自动执行的一条MySQL语句(或位于begin和end语句之间的一组语句):

  • delete
  • update
  • insert

其他MySQL语句不支持触发器

创建触发器

在创建触发器时,需要给出4条信息:

  • 唯一的触发器名;
  • 触发器关联的表
  • 触发器应该响应的活动(delete、insert或update)
  • 触发器何时执行(处理之前或之后)

insert触发器

  • insert触发器代码内,可引用一个名为new的虚拟表,访问被插入的行
  • 在before insert触发器中,new中的值也可以被更新(允许更改插入的值)
  • 对于auto_increment列,new在insert执行之前包含0,在insert执行之后包含新的自动生成值
//可以用来确定新生成值
create triger neworder after insert on orders
for each row select new.order_num;


注意:上面的例子在mysql 5.7(wamp下)测试不通过

delete触发器

  • 在delete触发器代码内,你可以引用一个名为old的虚拟表,访问被删除的行
  • old中的值是只读的
create trigger deleteorder before delete on orders
for each row
begin
  insert into archive_orders(order_num, order_date, cust_id)
  values(old.order_num, old,order_date, old.cust_id);
end;

update触发器

  • 在update触发器代码内,你可以引用一个名为old的虚拟表访问以前的值,引用一个名为new的虚拟表访问新更新的值
  • 在before update触发器内,new中的值可能也被更新(运行更改将要用于update语句中的值)
  • old中值全都是只读的
create trigger updatevendor before update on vendors
for each row set new.vend_state = upper(new.vend_state);


参考书籍:

  • MySQL必知必会

相关文章

网友评论

      本文标题:MySql 触发器

      本文链接:https://www.haomeiwen.com/subject/bfumgttx.html