• mysql 触发器


    mysql 触发器

    监听数据进行操作: 有点类似于js的事件。在当前表上,设置一个对每行数据的一个监听器,监听相关事件每当事件发生时,会执行一段由SQL完成的一段功能代码。

    触发器的元素:

    事件和发生时间时执行的代码。

    触发器的创建:

    Create trigger 名字 事件 执行性代码。

    触发器的事件分为:

    插入 insert 删除 delete 修改 update 事件的时机: before执行之前 和 after执行之后. 由时机和事件在一起,形成了六种事件。

    触发器的注意事项:

    一个完整的事件应该规定,在哪张表上,什么时机,什么动作上。

    Create trigger trigger_name after update on table_name for each row Update table_name set cz_money=cz_money-20;

    Create trigger 创建触发器.

     trigger_name:触发器名字.

    after update on  table_name : 为 触发的事件 当czbk_truendt 表发生update 时,触发Update table_name set cz_money=cz_money-20;这个语句!

    注意:1. 触发器不能重名 2.一个表同一个事件只能有一个触发器。

     

    触发器的 删除 查看

    删除:  Drop trigger name ;   查看: show create trigger name;

     

    触发器的数据old和new

    在触发器内,获得触发该触发程序时的数据,利用触发程序内的 new 和 old 来完成。 Old : 监听事件所在表上的数据,在事件发生之前的数据,旧的数据。 New : 监听表上,事件发生之后,新处理后的数据。 Old.stu_money 表示 stu_money字段老的数据,new.stu_money 表示 stumoney字段 的 新的数据;如果是 insert 事件 不能使用 old; 如果是 delete 事件 不能使用 new。

    如果一个触发程序,由多条sql 语句应该怎么办:

    1. 语句组成语句块用(begin end)来标示语句块。

    2. 语句组中的每个语句后需要用语句结束符来分割 ;如果使用分号作为每个语句的结束符那么mysql可能会认为第一个语句结束就是触发器的结束,所以我们需要在创建触发器前修改语句结束符,触发器创建结束后在修改回来。

    Delimiter 命令可以设置命令结束符。

    Delimiter $$;//将命令结束符号该为$$

    Create trigger ruxue

    after insert on czbk_student for each row

    Begin//触发语句组开始

    Update class set stu_cout=stu_count+1;//应为在上面讲结束符改为$$ 了所以分号不会结束语句

    Update class set cz_money=cz_money+20;

    End $$//触发语句组结束 使用$$ 结束触发器命令

    Delimiter;在将语句结束符修改回来!

  • 相关阅读:
    团队的最佳诠释
    诸葛烤鱼
    Agile Web Development with Rails 读书笔记 (四)
    Agile Web Development with Rails 读书笔记 (三)
    客户教育
    To Be Or Not To Be Is The Question
    [zz]记录一linux命令:xargs
    Ubuntu 12.04 开启 wubi 安装
    [zz]mknod用法以及主次设备号
    [zz]centos下安装KVM方法
  • 原文地址:https://www.cnblogs.com/phpshen/p/3878267.html
Copyright © 2020-2023  润新知