• 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;
  • 相关阅读:
    Android不规则瀑布流照片墙的实现+LruCache算法
    嵌入式OS入门笔记-以RTX为案例:六.RTX的任务调度
    Oracle backgroup processes
    Android中数据库的操作流程详解
    Dreamweaver PHP代码护眼配色方案
    Twitter 新一代流处理利器——Heron 论文笔记之Heron架构
    Docker简单介绍
    C#下使用GDAL
    Android:实现仿 美团/淘宝 多级分类菜单效果
    KVC在定义Model类中的妙用
  • 原文地址:https://www.cnblogs.com/wuguiyu/p/11934399.html
Copyright © 2020-2023  润新知