zoukankan      html  css  js  c++  java
  • day17:触发器

    触发器(trigger):触发器可被视为预编译并存储在数据库中的小程序。在相应表上执行update、delete或insert之类的DML语句时,将自动执行触发器。这些DML命令还可以由外部客户端应用程序发出。触发器可以在启动它的语句之前或之后执行。

    触发器包含:事件类型,触发时间,触发对象

      事件类型:增删改,三种类型insert,delete和update

      触发时间:前后:before和after

      触发对象:表中的每一条记录(行)

    注意:一张表中只能拥有一种触发时间的一种类型的触发器,最多一张表能有6个触发器

    一、创建触发器

    在MySQL高级结构中;没有大括号,都是用对应的字符符号代替

    触发器的基本语法:

    delimiter  自定义符号            --  临时修改语句结束符

    create  trigger  触发器名字   触发器时间  事件类型   on   表名  for  each  row

    begin  

      --  里面就是触发器的内容;每行内容都必须使用语句结束符分号;

    end  自定义符号

    delimiter  ;                      -- 将结束符修改过来

    例如:在商品表和订单表中,每当订单表增加,商品表对应的商品的数量就要减少;

    创建商品表(goods)和订单表(orders) 

    create  table goods(
        id int primary key auto_increment,
        gname varchar(55),
        gount int not null
    );
    create table orders(
        id int primary key auto_increment,
        oname varchar(55) not null
    );
    insert into goods values(111,'小米手机',10),(null,'华为手机',10);

    创建触发器

    delimiter //
    create trigger my_good_order after insert on orders for each ROW
    BEGIN
        update goods set gount=gount-1 where id =111;
    end //
    delimiter ;

    向orders表中增加记录,可看到goods表中的数量在减少

    select * from goods;
    
    
    insert into orders values(null,'小米手机');
    
    
    select * from goods;

    二、查看触发器

    查看所有触发器

    show triggers;

    查看触发器创建语句

    show create  trigger  触发器名称;

    show create trigger my_good_order;

    三、触发器使用

    不需要手动调用,而是当某种情况发生时自动触发

    四、删除触发器

    drop  trigger  触发器名称;

    drop trigger my_good_order;
  • 相关阅读:
    博客园——程序员
    PHP获取IP
    VIM使用笔记
    再见,帕金!
    A Song of My Heart
    读书...
    纪念日...
    一路向北
    韬光养晦,希望能有所作为
    一首好歌!
  • 原文地址:https://www.cnblogs.com/wuguiyu/p/11934399.html
Copyright © 2011-2022 走看看