美文网首页
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