转载地址:http://www.2cto.com/database/201212/176781.html

触发器是MySQL响应以下任意语句而自动执行的一条MySQL语句(或位于BEGIN和END语句之间的一组语句):  www.2cto.com

            DELETE;
            INSERT;
            UPDATE;
            使用触发器,需要MySQL5或之后的版本支持。
一、触发器基本操作
1、创建触发器
        创建触发器时,需要给出4条信息:
        唯一的触发器名;(虽然MySQL5允许不同的表上的触发器名称相同,但一般最好不要这么做。)  www.2cto.com  
        触发器关联的表;
        触发器响应的事件;
        触发器何时执行;
        语法结构:
        create trigger trigger_name (BEFORE|AFTER) (delete|update|insert) on table_name
        for each row
        BEGIN
        要触发的sql语句;
        END;
        示例:
[sql] 
mysql> delimiter |  
mysql> create trigger t_trig before insert on t_goods for each row  
    -> begin  
    ->     set NEW.add_date = current_date();  
    -> end;  
    -> |  
mysql> delimiter ;  
mysql> insert into t_goods(id,goods_name,quantity)  
    -> values(1,'apple',50);  
    -> |  
mysql> select * from t_goods;  
    -> |  
+------+------------+----------+------------+  
| id   | goods_name | quantity | add_date   |  
+------+------------+----------+------------+  
|    1 | apple      |       50 | 2012-12-12 |  
+------+------------+----------+------------+  
 
2、删除触发器
        DROP TRIGGER [schema_name.]trigger_name;  
        示例:
        mysql> DROP TRIGGER t_trig;
3、查看触发器
        SHOW TRIGGERS [ FROM DBNAME [ like '' ] ];
        示例:
[sql]   www.2cto.com  
mysql> show triggers;  
+---------+--------+---------+------------------------------------------------------------------------------------------  
| Trigger | Event  | Table   | Statement  
+---------+--------+---------+------------------------------------------------------------------------------------------  
| t_trig  | INSERT | t_goods | begin  
    set NEW.add_date = current_date();  
end | BEFORE | NULL    |          | root@localhost | latin1               | latin1_swedish_ci    | latin1_swedish_ci  |  
+---------+--------+---------+------------------------------------------------------------------------------------------  
mysql> show triggers from test;  
+---------+--------+---------+------------------------------------------------------------------------------------------  
| Trigger | Event  | Table   | Statement  
+---------+--------+---------+------------------------------------------------------------------------------------------  
| t_trig  | INSERT | t_goods | begin  
    set NEW.add_date = current_date();  
end | BEFORE | NULL    |          | root@localhost | latin1               | latin1_swedish_ci    | latin1_swedish_ci  |  
+---------+--------+---------+------------------------------------------------------------------------------------------  
mysql> show triggers from test like 't%';  
+---------+--------+---------+------------------------------------------------------------------------------------------  
| Trigger | Event  | Table   | Statement  
+---------+--------+---------+------------------------------------------------------------------------------------------  
| t_trig  | INSERT | t_goods | begin  
    set NEW.add_date = current_date();  
end | BEFORE | NULL    |          | root@localhost | latin1               | latin1_swedish_ci    | latin1_swedish_ci  |  
+---------+--------+---------+------------------------------------------------------------------------------------------  
 
二、注意事项
1、只有表支持触发器,视图及临时表都不支持;
2、每个表最多支持6个触发器;
3、单一触发器不能与多个事件或多个表关联;
4、对于INSERT而言,新增的行用NEW来表示,行中的每一列的值,用NEW.列名来表示;
        对于DELETE而言,删除的行用OLD来表示;

对于UPDATE而言,更新前的行用OLD来表示,更新后的行用NEW来表示

【转】MYSQL入门学习之十一:触发器的基本操作的更多相关文章

  1. 【数据库】9.0 MySQL入门学习(九)——获得数据库和表的信息、日期计算、查询、选择特殊列

    1.0 SELECT语句用来从数据表中检索信息. SELECT what_to_select FROM which_table WHERE conditions_to_satisfy; what_to ...

  2. 【数据库】7.0 MySQL入门学习(七)——MySQL基本指令:帮助、清除输入、查询等

    1.0 help == ? 帮助指令,查询某个指令的解释.用法.说明等.详情参考博文: [数据库]6.0 MySQL入门学习(六)——MySQL启动与停止.官方手册.文档查询 https://www. ...

  3. 【数据库】4.0 MySQL入门学习(四)——linux系统环境下MySQL安装

    1.0 我的操作系统是CentOS Linux release 7.6.1810  (Core) 系统详细信息如下: Linux version 3.10.0-957.1.3.el7.x86_64 ( ...

  4. 【数据库】3.0 MySQL入门学习(三)——Windows系统环境下MySQL安装

    1.0 我的操作系统是window10 专业版 64位.,不过至少windows7以上系统都是一样的. 关于MySQL如何下载,请参考博文: [数据库]2.0 如何获得MySQL以及MySQL安装 h ...

  5. 【转】MYSQL入门学习之十:视图的基本操作

    转载地址:http://www.2cto.com/database/201212/176775.html 一.视图的基本介绍  www.2cto.com           视图是虚拟的表.与包含数据 ...

  6. 【数据库】2.0 MySQL入门学习(二)——如何获得MySQL以及MySQL安装

    1.0 如何获得MySQL: www.oracle.com https://dev.mysql.com/downloads/ 2.0 例如进入Oracle官网,找到MySQL: 进入页面后,切换到“资 ...

  7. MYSQL数据库学习----索引和触发器

    一:索引 索引是创建在数据库表上,其作用是提高对表中数据的查询速度. 假设数据库中有一张1000条记录的表格,如果没有创建索引的话,用户想通过查询条件查询,实际上是把整个数据库中1000条记录都读取一 ...

  8. 【转】MYSQL入门学习之十三:自定义函数的基本操作

    转载地址:http://www.2cto.com/database/201212/177382.html 一.自定义函数(UDF)的特性和功能  www.2cto.com           函数能分 ...

  9. 【转】MYSQL入门学习之十二:存储过程的基本操作

    转载地址:http://www.2cto.com/database/201212/177380.html 存储过程简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合.可将其视为批文件,虽 ...

随机推荐

  1. 对ASP.NET Cookie的一些新的认识

    做用户登录,我一直用form验证的方式.有时候,为了节省时间,用户希望用户名输入框能够记住用户名,省得下次重新输入.这个时候光用form验证是不行的,因为form验证的话,用户一退出系统就失效了,所以 ...

  2. Java基础之线程——管理线程同步方法(BankOperation2)

    控制台程序. 当两个或多个线程共享同一资源时,例如文件或内存块,就需要采取措施,确保其中的一个线程不会修改另一个线程正在使用的资源.当其中的一个线程更新文件中的某个记录,同时另一个线程正在检索这个记录 ...

  3. Android Push Notification实现信息推送使用

    本贴在http://www.cnblogs.com/hanyonglu/archive/2012/03/16/2399655.html下略为改动. Apndroid Push Notification ...

  4. linux文件编码

    linux下新建一个文件,或采用fopen新建,那么文件的编码是什么? 怎么查看文件编码格式: 查看文件编码file命令file ip.txt ip.txt: UTF-8 Unicode text, ...

  5. FlashBuilder 4.7 win64 和 mac版 下载地址

    win64 http://trials3.adobe.com/AdobeProducts/FLBR/4_7/win64/FlashBuilder_4_7_LS10_win64.exe mac http ...

  6. Subversion under Linux [Reprint]

    一.安装 yum install subversion 二.配置 本系统采用为每个项目单独建一版本库的策略.配置文件,密码文件,访问控制文件等都放在版本库的conf目录下. 所以每次开始一个新项目都必 ...

  7. Python高频技巧总结[基础篇]

    0. 概要说明 python应用最多的场景还是web快速开发.爬虫.自动化运维:简单网站.自动Fuzz脚本.收发邮件脚本.简单验证码识别脚本. 爬虫在开发过程中也有很多复用的过程,这里总结一下,以后也 ...

  8. 。。。HibernateTemplate与Session。。。

    今天在学习Spring框架的时候,突然发现了这个类----HibernateTemplate,这个类与Session一开始认为是差不多的,这个HibernateTemplate类对象拥有Session ...

  9. String.Format数字格式化参考

    String.Format数字格式化输出 {0:N2} {0:D2} {0:C2} (转) 数字 {0:N2} 12.36 数字 {0:N0} 13 货币 {0:c2} $12.36 货币 {0:c4 ...

  10. struts2中Double类型的转换

    今天做项目,ssh + Extjs,页面js中定义了几个NumberField,对应的value都是double类型的,其中有个NumberField的name为 name,结果执行的时候报错了,说找 ...