MySQL:MySQL 触发器

MySQL触发器(了解)

1 什么是触发器

  触发器(trigger)是MySQL提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事 件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对 一个表进行操作作(insert,delete, update)时就会激活它执行。

  简单理解: 当我们执行一条sql语句的时候,这条sql语句的执行会自动去触发执行其他的sql语句。

 

2 触发器创建的四个要素

  1. 监视地点(table)

  2. 监视事件(insert/update/delete)

  3. 触发时间(before/after)

  4. 触发事件(insert/update/delete)

3 创建触发器

  1) 语法格式

delimiter $ -- 将Mysql的结束符号从 ; 改为 $,避免执行出现错误
CREATE TRIGGER Trigger_Name -- 触发器名,在一个数据库中触发器名是唯一的
before/after(insert/update/delete-- 触发的时机 和 监视的事件
on table_Name -- 触发器所在的表
for each row -- 固定写法 叫做行触发器, 每一行受影响,触发事件都执行
begin
    -- begin和end之间写触发事件
end
$     -- 结束标记

 

  2) 向商品中添加一条数据

# 向商品中添加一条数据
INSERT INTO goods VALUES(1,'book',40);

 

  3) 需求: 在下订单的时候,对应的商品的库存量要相应的减少,卖出商品之后减少库存量。

  编写触发器

-- 1.修改结束标识
DELIMITER $
-- 2.创建触发器
CREATE TRIGGER t1
-- 3.指定触发的时机,和要监听的表
AFTER INSERT ON orders
-- 4.行触发器 固定写法
FOR EACH ROW
-- 4.触发后具体要执行的事件
BEGIN
    -- 订单+1 库存-1
    UPDATE goods SET num = num -1 WHERE gid = 1;
END$

·  4) 查询 goods表中的数据

    

 

 

   5) 向订单表中添加一条数据

  

INSERT INTO orders VALUES(1,1,25);

 

  6) goods表中的数据随之 -1

  

 

posted @ 2021-07-17 15:50  Jasper2003  阅读(1505)  评论(0编辑  收藏  举报