我是靠谱客的博主 怕黑铃铛,最近开发中收集的这篇文章主要介绍MYSQL入门学习之十一:触发器的基本操作,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

            触发器是MySQL响应以下任意语句而自动执行的一条MySQL语句(或位于BEGIN和END语句之间的一组语句):
            DELETE;
            INSERT;
            UPDATE;
            使用触发器,需要MySQL5或之后的版本支持。
一、触发器基本操作
1、创建触发器
        创建触发器时,需要给出4条信息:
        唯一的触发器名;(虽然MySQL5允许不同的表上的触发器名称相同,但一般最好不要这么做。)
        触发器关联的表;
        触发器响应的事件;
        触发器何时执行;
        语法结构:
        create trigger trigger_name (BEFORE|AFTER) (delete|update|insert) on table_name
        for each row
        BEGIN
        要触发的sql语句;
        END;
        示例:

        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 '' ] ];
        示例:
        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入门学习之十一:触发器的基本操作的全部内容,希望文章能够帮你解决MYSQL入门学习之十一:触发器的基本操作所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部