zoukankan      html  css  js  c++  java
  • mysql——触发器——概念

    一、触发器
    
    触发器是由事件来出发某个动作。这些事件包括insert语句、update语句和delete语句。
    
    当数据库系统执行这些事件时,就会激活触发器执行相应得动作。
    
    触发器是有insert、update、delete等事件来触发某种特定动作。满足触发器的触发条件时,数据库系统就会执行触发器中定义的程序语句。
    
    这样做可以保证某些操作之间的一致性.
    
    
    1、创建只有一个执行语句的触发器
    
    语法格式:
    
    
             create trigger 触发器名 before|after 触发事件
    
             on 表名 for each row 执行语句
    
    
    触发器名参数指要创建的触发器的名字;
    
    before和after参数指定了触发器执行的时间;
    
       before指在触发事件之前执行触发语句;
    
       after指在触发事件之后执行触发语句;
    
    触发事件指触发的条件,其中包括insert、update、delete;
    
    表名指触发事件操作的表的名称;
    
    for each row表示任何一条记录上的操作满足触发条件都会触发该触发器;
    
    执行语句指触发器被触发后执行的程序;
    
    
    举例:
    
    create trigger dept_trig1 before insert
    
    on department for each row
    
    inert into trigger_time values(now());
    
    注释:当向department表中执行insert操作时,数据库系统都会在insert语句执行之前向trigger_time表中插入当前时间;
    
    
    2、创建有多个执行语句的触发器
    
    
    语法格式:
    
    
             create trigger 触发器名 before|after 触发事件
    
             on 表名 for each row 
    
    
             begin
    
                    执行语句列表
    
             end
    
    
    
    
    执行语句列表表示需要执行的多个执行语句的内容,不同执行语句之间用分好隔开;
    
    
    注意:
    
    一般情况下,MYSQL默认的是以“;”作为结束执行语句。在创建触发器的过程中,需要用到“;”为了解决这个问题可以用delimiter语句
    
    如“delimiter &&”可以将结束符号变为“&&”。当触发器创建完成之后,可以用命令“delimiter ;”来将结束符号变为“;”。
    
    
    举例:
    
    
    delimiter &&
    
    create trigger dept_trig2 aftrer delete
    
    on department for each row
    
    begin
           insert into trigger_time values('21:01:01');
           insert into trigger_time values('22:01:01');
    end
    
    &&
    
    delimiter;
    
    
    注意:在MYSQL中,一个表在相同的触发时间,只能创建一个触发器;
    
    
    3、查看触发器
    
    (1)show triggers语句查看触发器信息
    
    语法格式:show triggers;
    
    注释:其结果显示了所有触发器的基本信息,但是该语句无法查询指定的触发器信息,只能查询所有的触发器信息,适合触发器较少时使用
    
    
    
    (2)在triggers表中查看触发器信息
    
    在MYSQL中,所有触发器的定义都存储在information_schema数据库下的triggers表中,
    
    查询triggers表,可以查看到数据库中所有触发器的详细信息;
    
    语法格式:select * from information_schema.triggers;
    
    
    同时该方法可以查询指定触发器的详细信息。
    
    语法格式:select * from information_schema.triggers where trigger_name='触发器名';
    
    
    
    4、触发器的使用
    
    before在触发事件之前执行,after在触发事件之后执行;
    
    注意:触发器中不能包含start transaction、commit或者rollback等关键词,也不能包含call语句。
    
    
    
    5、删除触发器
    
    语法格式:drop trigger 触发器名;
    
    
    =====================================================================================================================
    =====================================================================================================================
    =====================================================================================================================
    =====================================================================================================================
    =====================================================================================================================
    =====================================================================================================================
    
    create trigger 触发器名  before| after 触发事件
    on 表名 for each row
    
    执行语句;
    
    
    
    delimiter &&
    create trigger 触发器名  before| after 触发事件
    on 表名 for each row
      begin
            执行语句列表
      end
      &&
    delimiter;
    
    
    触发事件是指触发条件,包括insert、update、delete;
    
    表名指触发事件操作的表的名称;
    
  • 相关阅读:
    CodeForces Gym 100935G Board Game DFS
    CodeForces 493D Vasya and Chess 简单博弈
    CodeForces Gym 100935D Enormous Carpet 快速幂取模
    CodeForces Gym 100935E Pairs
    CodeForces Gym 100935C OCR (水
    CodeForces Gym 100935B Weird Cryptography
    HDU-敌兵布阵
    HDU-Minimum Inversion Number(最小逆序数)
    七月馒头
    非常可乐
  • 原文地址:https://www.cnblogs.com/xiaobaibailongma/p/12093330.html
Copyright © 2011-2022 走看看