zoukankan      html  css  js  c++  java
  • MySql:触发器

    触发器

    一、触发器的定义:

      触发器是个特殊的存储过程,不同的是,执行存储过程要使用CALL语句来调用,而触发器的执行不需要使用CALL语句来调用,也不需要手工启动,只要当一个预定的事件发生时,就会被MySQL调用

    二、创建触发器

    总语法:
    CREATE
        [DEFINER = { user | CURRENT_USER }]
        TRIGGER trigger_name trigger_time trigger_event
    ON tbl_name FOR EACH ROW trigger_body
    
    trigger_name:标识触发器的名称,用户自行定义;
    trigger_time:标识触发器的时机,可以指定为before或after 
    trigger_event:标识触发事件,包括INSERT、UPDATE和DELETE
    tbl_name:标识建立触发器的表名,即在那张表上建立触发器
    trigger_body:触发器程序体
    【例】
    
     mysql> create trigger ints_sum before insert on account for each row set
     @sum=@sum+new.amount;

    作用:对插入的amount字段进行求和
    注意:不能少了“@”;

    三、查看触发器

    语法:
    (1)show 语法-----适用与触发器较少情况
    SHOW TRIGGERS [{FROM | IN} db_name]
       [LIKE 'pattern' | WHERE expr]
    {FROM | IN}db_name:标识库名
    LIKE 'pattern' | WHERE expr:标识查询条件
       【例】
    
    mysql> show triggersG;
    *************************** 1. row ***************************
                 Trigger: ints_sum
                   Event: INSERT
                   Table: account
               Statement: set @sum=@sum+new.amount
                  Timing: BEFORE
                 Created: 2018-01-12 08:54:45.25
                sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
                 Definer: root@localhost
    character_set_client: gbk
    collation_connection: gbk_chinese_ci
      Database Collation: utf8_general_ci
    
    (2)使用triggers表查询
    语法:
    mysql> select * from information_schema.triggers where 条件;
    【例】
    
    mysql> select * from information_schema.triggers where trigger_name='INTS_sum'G;

    四、删除触发器

    语法:
    DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name
    schema_name.表示库名
    【例】
    
    mysql> drop trigger ints_sum;
     
  • 相关阅读:
    JVM垃圾回收算法
    Java内存堆和栈的区别?
    JDK8为何要废弃永久代
    配置环境变量的一些坑
    在配置环境变量时是该用系统环境变量还是用户环境变量?
    RPC(远程过程调用协议)介绍
    如何修改博客园“插入代码”中的代码风格?(一个博客园代码高亮的方案)
    如何修改博客园插入代码的默认代码大小?
    Java值传递
    使用VS2017实现C#第一个代码
  • 原文地址:https://www.cnblogs.com/hahayixiao/p/10199216.html
Copyright © 2011-2022 走看看