zoukankan      html  css  js  c++  java
  • mysql触发器学习笔记

      触发器是一个特殊的存储过程,不同的是执行存储过程需要用call进行调用,而触发器的执行不需要被调用,只要当一个预定义的事件发生时,就会被mysql自动调用

      创建触发器的语法

      

    create trigger trigger_name trigger_time trigger_event
        on table_name for each row trigger_stmt

      其中trigger_name为创建的触发器的名称,这个是由自己进行定义的

        trigger_time是触发时机可选值有before,after

        trigger_event是触发事件(insert,delete,update)

        table_name是建立触发器的表名

        trigger_stmt是触发程序体

    触发器的使用示范

     建立表

    create table account(
        acct_num int,
        amount decimal(10,2)
    );

     创建触发器

    set @sum = 0;
    create trigger ins_sum1 after insert on account 
        for each row set @sum = @sum + new.amount;

    @sum表示用户变量,使用set语句为其赋值,用户变量与连接有关。

    触发器ins_sum的作用是向数据表中添加一个数据之前,对新插入的数据的account的字段进行求和计算

    创建一个含多各执行语句的触发器

    #建立相关数据表
    create table test1(a1 int);
    create table test2(a2 int);
    create table test3(a3 int not null auto_increment primary key);
    create table test4(a4 int not null auto_increment primary key,
    b4 int default 0);
    #创建触发器
    delimiter $
    create trigger testref before insert on test1
        for each row
        begin
            insert into test2 set a2 = new.a1;
            delete from test3 where a3 = new.a1;
            update test4 set b4 = b4 + 1 where a4 = new.a1;
        end$
    #插入数据
    delimiter $
    create trigger testref before insert on test1
        for each row
        begin
            insert into test2 set a2 = new.a1;
            delete from test3 where a3 = new.a1;
            update test4 set b4 = b4 + 1 where a4 = new.a1;
        end$
        delimiter ;
        insert into test3(a3) values
        (null),(null),(null),(null),(null),(null),(null),(null);
        insert into test4(a4) values
        (0),(0),(0),(0),(0),(0),(0),(0);
        insert into test1(a1) values
        (1),(3),(1),(7),(1),(8),(4),(4);
        select * from test1;
        select * from test2;
        select * from test3;
        select * from test4;
        insert into test5(a4) values
        (0),(0),(0),(0),(0),(0),(0),(0);
    笨鸟先飞
  • 相关阅读:
    C++扬帆远航——4(百钱百鸡)
    C++扬帆远航——3(打印图形)
    C++扬帆远航——2
    web开发之Servlet 三
    web开发之Servlet 二
    web开发之Servlet 一
    迟来的2017年计划
    JSP 学习二
    JSP 学习一
    window7 32位安装Oracle11g
  • 原文地址:https://www.cnblogs.com/zoutingrong/p/14538435.html
Copyright © 2011-2022 走看看