zoukankan      html  css  js  c++  java
  • MySQL触发器的操作

    数据库对象触发器用来实现由一些表事件触发的某个操作,当执行表事件时,则会激活触发器,从而执行其包含的操作;

    MySQL在触发以下语句时,会自动执行所设置的操作:delete、insert、update语句,其他SQL语句则不会激活触发器;

    触发器的操作包括创建触发器,查看触发器和删除触发器。

    在MySQL中创建触发器通过以下语句实现:

    create trigger trigger_name before|after trigger_event on table_name for each now trigger_STMT;

    before和after参数指定了触发器的执行时间,before是指在触发器事件之前执行触发语句,trigger_event表示触发事件,即触发器执行条件,包含delete、insert、update语句,trigger_STMT表示激活触发器后被执行的语句,如:

    create trigger tri_diary before insert on t_dept for each now insert into t_diary values(null, 't_dept', now()) ;

    当向t_dept插入任意一条记录,都会在此之前向t_diary表插入当前事件记录。

    如需创建多条包含执行语句的触发器,可通过以下命令实现:

    create trigger trigger_name before|after trigger_event on table_name for each row begin insert trigger_STMT end

    举个例子吧,如果需要每次在t_dept插入数据之后向表t_diary插入两条当前时间,语句如下:

    delimiter $$
    create trigger tri_diary2 
        after insert 
            on t_dept for each row 
                begin
                    insert into t_diary values(null, 't_dept', now());
                    insert into t_diary values(null, 't_dept', now());
                end
                $$
    delimiter;

    查看触发器,类似于表和视图,都是通过show等语句实现:

    show triggers ;

    在系统表information_schema表中也可实现查看触发器:

    use information_schema;
    select * from trigger;

    删除触发器:

    drop trigger tri_name;
  • 相关阅读:
    URAL 2067 Friends and Berries (推理,数学)
    URAL 2070 Interesting Numbers (找规律)
    URAL 2073 Log Files (模拟)
    URAL 2069 Hard Rock (最短路)
    URAL 2068 Game of Nuts (博弈)
    URAL 2066 Simple Expression (水题,暴力)
    URAL 2065 Different Sums (找规律)
    UVa 1640 The Counting Problem (数学,区间计数)
    UVa 1630 Folding (区间DP)
    UVa 1629 Cake slicing (记忆化搜索)
  • 原文地址:https://www.cnblogs.com/jdwfff/p/10503246.html
Copyright © 2011-2022 走看看