zoukankan      html  css  js  c++  java
  • MySQL-快速入门(10)触发器

    1、什么是触发器

      触发器是与表有关的命名数据库对象。触发器由事件来触发某个操作。

      触发器是特殊的存储过程,触发器不需要call语句来调用,也不需要手工启动,只需要确定一个预定义的事件发生的时候,就会被MySQL自动调用。

    2、创建触发器

      1》创建只有一个执行语句的触发器

    //trigger_time触发的时机,可以指定before或after;
    //trigger_event标识触发事件,包括insert、update、delete;
    //trigger_stmt是触发器执行语句。 create trigger trigger_name trigger_time trigger_event on tb_name
    for exch row trigger_stmt
    mysql> create table account(num int,amount decimal(10,2));
    Query OK, 0 rows affected (0.03 sec)
    
    mysql> create trigger ins_num before insert
        -> on account
        -> for each row set @sum=@sum+NEW.amount;
    Query OK, 0 rows affected (0.02 sec)
    
    mysql> set @sum=0;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> insert into account values(1,1.00),(2,2.00);
    Query OK, 2 rows affected (0.02 sec)
    Records: 2  Duplicates: 0  Warnings: 0
    
    mysql> select @sum;
    +------+
    | @sum |
    +------+
    | 3.00 |
    +------+
    1 row in set (0.00 sec)
    
    mysql>

      2》创建有多个执行语句的触发器

    create trigger trigger_name trigger_time trigger_event
    on tb_name for exch row 
    begin
      ...
    end
    mysql> create table t1(a1 int);
    Query OK, 0 rows affected (0.03 sec)
    
    mysql> create table t2(a2 int);
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> delimiter //
    mysql> create trigger trigger_insert_t1 before insert
        -> on t1 for each row
        -> begin
        ->   insert into t2 values(NEW.a1);
        -> end//
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> delimiter ;
    mysql> insert into t1 values(233);
    Query OK, 1 row affected (0.00 sec)
    
    mysql> select * from t1;
    +------+
    | a1   |
    +------+
    |  233 |
    +------+
    1 row in set (0.00 sec)
    
    mysql> select * from t2;
    +------+
    | a2   |
    +------+
    |  233 |
    +------+
    1 row in set (0.00 sec)
    
    mysql>

    3、查看触发器,2种方式

      1》show triggers

    show triggers;

      2》在triggers表中查看触发器信息。

    select * from information_schema.triggers where condition;

    4、触发器的使用

       在insert、update、delete事件中对数据检查等。

    5、删除触发器

    drop trigger [schema_name.]trigger_name
  • 相关阅读:
    Cocos2d-x游戏《雷电大战》开源啦!要源代码要资源快快来~~
    Tomcat部署项目时出错java.lang.IllegalStateException: ContainerBase.addChild: start:org.apache.catalina.Life
    PCA主成分分析Python实现
    C语言知识结构之二
    javascript中构造函数的返回值问题和new对象的过程
    poj 1694 An Old Stone Game 树形dp
    Android新技术学习——阿里巴巴免Root无侵入AOP框架Dexposed
    c++中vector向量几种情况的总结(向量指针,指针的向量)
    Hash分析
    三期_day05_Dao层的准备工作_II
  • 原文地址:https://www.cnblogs.com/ZeroMZ/p/11462768.html
Copyright © 2011-2022 走看看