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
  • 相关阅读:
    win10下安装Anaconda3+keras+tensorflow
    Ubuntu 下安装安装 Anaconda3 与Keras
    ESP32开发之Windows开发环境
    LinuxE2系统刷机后OSCAM安装与读卡器设置
    安德鲁1.2Ku全下125C波(CCTV4K除外)
    安德鲁1.2Ku使用感受
    ubuntu10.04换官方源
    密室逃脱游戏解决方案-森林迷宫-炸弹人等
    Qt linux获取cpu使用率、内存、网络收发速度、磁盘读写速度、磁盘剩余空间等
    ESP32 做Web服务器 http Server步骤
  • 原文地址:https://www.cnblogs.com/ZeroMZ/p/11462768.html
Copyright © 2011-2022 走看看