zoukankan      html  css  js  c++  java
  • MYSQL---触发器简单了解

    触发器 trigger

    1、触发器是指事先为某张表绑定一段代码,当表中某些内容发生改变(增insert、删delete、改update)时,系统自动触发绑定的那段代码并执行。比如 一旦订单表里插入新订单,商品的库存数自动减N.

    2、触发器的三要素:

    事件因素:insert、删delete、改update

    触发时间:前before、后after

    触发对象:表中每条记录,即整个表

    那么每张表可以有6个触发器(增、删、改3个事件的前和后)

    3、创建触发器

    delimiter--自定义符号

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

    begin--触发器内容的开始

    ---触发器内容主体

    end--触发器内容结束

    delimiter.--恢复语句结束符

    4、以商品表goods  和订单表odrer举例说明触发器,sql语句如下:

    创建商品表:

    create table goods(

             in int primary auto_increment,

             name varchar(20) not null,----- not null:意思是不允许给这个字段插入空值

             price decimal(10,2)  default 0,------------decimal一种数据类型,decimal(5,2)表示一共5位数,小数位2位,整数位5-2位

                                                                           default:当没有给此字段插入值时,默认给的值

             inventory int comment '商品库存量'-----comment  类似注释,备注说明的意思

    )

    create table goods( id int primary key auto_increment, name varchar(20) not null, price int, inventory int );

    插入商品:

    insert into goods values (1,‘Apple’,11,100),(2,‘Pear’,21,100);

     

    创建订单表

    create table orders (id int primary key auto_increment, good_id int,good_num int);

    创建触发器

    delimiter $$--临时修改语句结束符

    create trigger after_order after insert on orders for each row

    begin---触发器主体内容开始

    update goods set invenment=invenment-1 where id=1;--触发器主体内容,每行要以分号;结束

    end---触发器主体内容结束

    $$--结束语句

    deloimiter;恢复语句结束符

    使用触发器

     

    由结果可以看出,在给订单表添加一条记录后,商品表中对应的商品库存数减了1(先不管数量应该减10)

    触发器的触发对象和事件类型,一定不能和触发主体相同,否则容易造成死循环

  • 相关阅读:
    Prommetheus 插件监控 ES
    Linux LVM条带化
    MYSQL wait_timeout以及connect_timeout.这两个有什么区别
    alertmanager配置文件说明(转载)
    腾讯云MongoDB: skip查询内核优化(转载)
    MongoDB主从复制介绍和常见问题说明(转载)
    MongoDB 批量更新、批量新增、批量删除、批量替换 —— bulkWrite操作
    MongoDB Cluster 数据平衡优化
    MongoDB副本集提高读写速率
    Postgresql中时间戳与日期的相互转换(同样适用于GreenPlum)
  • 原文地址:https://www.cnblogs.com/sunny0/p/8955684.html
Copyright © 2011-2022 走看看