zoukankan      html  css  js  c++  java
  • mysql——触发器——示例

    数据准备:

    create table employee ( num int(50),
                            d_id int(50),
                            name varchar(50),
                            age int(50),
                            sex varchar(50),
                            homeadd varchar(50)
                           );
    insert into employee values(1,1001,'zhangsan',26,'nan','beijing'); insert into employee values(2,1001,'lisi',24,'nv','hunan'); insert into employee values(3,1002,'wangwu',25,'nan','jiangsu'); insert into employee values(4,1004,'aric',15,'nan','yingguo');
    select * from employee; create table department ( d_id int(50), d_name varchar(50), functione varchar(50), address varchar(50) );
    insert into department values(1001,'keyanbu','yanfachanpin','3lou5hao'); insert into department values(1002,'shengchanbu','shengchanchanp','5louyiceng'); insert into department values(1003,'xiaoshoubu','cehuaxiaoshou','1louxiaoshoudating');
    select * from department;

    select * from employee;

     select * from department;

    ==========================================================================

    create trigger 触发器名  before| after 触发事件
    on 表名 for each row
    
    执行语句;
    
    ----------------------------------------------------------------------------
    
    delimiter &&
    create trigger 触发器名  before| after 触发事件
    on 表名 for each row
      begin
            执行语句列表
      end
      &&
    delimiter;
    
    
    触发事件是指触发条件,包括insert、updatedelete;
    
    表名指触发事件操作的表的名称;

    创建一个表:

    create table trigger_time ( exec_time varchar(50)
                              );
    
    
    
    select * from trigger_time;



    ----------select now();

     

    =================================================

    创建一个触发器:

    create  trigger dept_trig1 before insert on department for each row insert into trigger_time values ( now() );

    ===========================================

    为了演示,先删除一条记录,再添加进去:

    delete from department where d_id = 1003;

    =========================================

    添加刚才删除的记录:

    insert into department values(1003,'xiaoshoubu','cehuaxiaoshou','1louxiaoshoudating'); 

    ===================================================================

    在department表insert时,触发器会被触发,我们查看下:

    select * from trigger_time;

    ===========================================================

    ==========================================================

    示例02:

    创建第二个演示示例用的时间表:

    create table trigger_time1 ( exec_time varchar(50)
                              );
    
    
    select * from trigger_time1;

    ==================================================================

    创建第二个触发器:

    delimiter &&
    create  trigger dept_trig2 after delete on department for each row 
    begin
          insert into trigger_time1 values ( now() );
          insert into trigger_time values ( now() );
    end 
    &&
    delimi

     

    ================================================

    执行删除语句:

    delete from department where d_id = 1003;

    ==========================================

    查看被删除记录的表以及2个时间表:

    select * from department;
    select * from trigger_time;
    select * from trigger_time1;

     

    =================================================================================================

    查看触发器

    1、查看数据库中所有触发器的信息:

           show triggers;

    ========================================================================

    2、在triggers表中查看触发器信息

    mysql中所有触发器的定义都存在information_schema数据库下的triggers表中,查询triggers表,可以查询数据库中所有触发器的详细信息

    select * from information_schema.triggers; /*查询所有*/


    select * from information_schema.triggers where trigger_name = 'dept_trig1'; /*单个指定查询*/


    注意:在激活触发器时,对触发器中的执行语句存在一些限制。而且触发器有问题,会阻止程序向下执行,而且数据不能回滚。

    select * from information_schema.triggers; /*查询所有*/
    
    select * from information_schema.triggers where trigger_name = 'dept_trig1'; 
    
    select * from information_schema.triggers where trigger_name = 'dept_trig2'; 

    ==================================================

    3、删除触发器

         drop trigger 触发器名;

    select * from information_schema.triggers;
    
    
    drop trigger dept_trig1;
    
    drop trigger dept_trig2;

  • 相关阅读:
    从 0 → 1,学习Linux该这么开始!
    Web和移动开发的未来
    css-div中文字过多(内容超出div宽度)后自动换行
    js+css--单选按钮,自定义选中的颜色???(性别按钮,男女)
    css-按钮中有图片和文字,怎么才能让文字和图片都中??
    js-点出弹框后(除了点击窗口上的叉子),点其他地方能够关闭窗口???
    css-外面元素的高度,由里面的元素进行撑开(由内部的高度决定)
    js-将传来的数据排序,让(全部)这个小按钮小圈圈,始终排列在最前面
    echart--如何在折线图上添加矩形背景(可以借用bar柱状图的实现效果)
    echart-如何将x轴和y轴的原点进行重合???
  • 原文地址:https://www.cnblogs.com/xiaobaibailongma/p/12093517.html
Copyright © 2011-2022 走看看