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
  • 相关阅读:
    (圆形imageview 类似qq头像)---》(ps:引用第三库APAvatarImageView>
    uiscrollerview循环滚动(参考第三方库:HMBannerView)https://github.com/iunion/autoScrollBanner
    iOS -动态可变参数
    ios-UIPickerView基本使用
    iOS 实现进度条(progress)
    @property (nonatomic, getter = isExpanded) BOOL expanded;
    linker command failed with exit code 1 (use -v to see invocation)
    APICloud界面间跳转
    iOS CGRectGetMaxY/CGRectGetMaxX
    iOS UIView常用的一些方法setNeedsDisplay和setNeedsLayout 区别
  • 原文地址:https://www.cnblogs.com/ZeroMZ/p/11462768.html
Copyright © 2011-2022 走看看