zoukankan      html  css  js  c++  java
  • MySQL触发器详解

    MySQL触发器

    触发器是特殊的存储过程。不同的是,触发器不需要手动调用。只要当预定义的事件发生时,会被MySQL自动调用。主要用于满足复杂业务的规则和需求。

    一、创建触发器

    1、创建只有一个执行语句的触发器,语法如下:

    CREATE TRIGGER trigger_name trigger_time trigger_event
    ON tab_name FOR EACH ROW trigger_stmt

    其中,trigger_name是标识触发器名称。trigger_time指定触发时机,可以指定before或after。trigger_event标识触发事件,包括INSERT、UPDATE、和DELETE;tab_name标识建立触发器的表名,即在哪张表上建立触发器。trigger_stmt是触发器执行的语句。

    触发器类型 触发触发器的语句
    INSERT触发器 INSERT、 LOAD DATA、REPLACE
    UPDATE触发器 UPDATE
    DELETE触发器 DELETE、 REPLACE

    load data语句是将文件的内容插入到表中,相当于是insert语句,而replace语句在一般的情况下和insert差不多,但是如果表中存在primary 或者unique索引的时候,如果插入的数据和原来的primary key或者unique相同的时候,会删除原来的数据,然后增加一条新的数据,所以有的时候执行一条replace语句相当于执行了一条delete和insert语句

    例:

    CREATE TABLE account (acct_num int, amount DECIMAL(10,2));
    CREATE TRIGGER ins_sum BEFORE INSERT on account
    FOR EACH ROW SET @sum = @sum + NEW.amount;
    

    首先创建一个表account。在向表插入数据前,计算所有新插入的account表的amount值和。

    说明:在MySQL中用oldnew表示执行前和执行后的数据,oldnew在oracle中表示执行前的行,和执行后的行。

    触发器类型 NEW和OLD的使用
    INSERT触发器 NEW表示将要或已经增加的数据
    UPDATE触发器 OLD表示将要或已经被删除的数据,NEW表示将要或已经修改的数据
    DELETE触发器 OLD表示将要或已经删除的数据

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

    创建多个执行语句的触发器的语法如下:

    CREATE TRIGGER trigger_name trigger_time trigger_event
    ON tab_name FOR EACH ROW
    BEGIN
         语句执行列表
    END;

    二、查看触发器

    查看触发器是指查看数据库中已存在的触发器的定义,状态和语法信息等。可以通过命令来查看已经创建的触发器。

    1、show triggers语句查看触发器信息,语法如下:

    SHOW TRIGGERS;

    2、在triggers表中查看触发器的信息。在MySQL中所有触发器的定义都存在information_schema数据库的triggers表中,语法如下:

    select * from information_schema.triggers where ...

    三、删除触发器

    使用drop语句可以删除MySQL中定义的触发器,语法格式如下:

    DROP TRIGGER trigger_name;
  • 相关阅读:
    ssh密钥讲解
    Python之paramiko模块
    Python之socket编程进阶版
    linux内socket服务器无法连接windows
    Python之socket编程
    linux(centOS7,mini),python环境的搭建
    Python 之异常处理机制
    pytho常用模块2——random
    Hadoop基础(二):从Hadoop框架讨论大数据生态
    Hadoop基础(一):概论
  • 原文地址:https://www.cnblogs.com/jkin/p/10229138.html
Copyright © 2011-2022 走看看