mysql笔记(22)--使用触发器

什么是触发器?

在事件发生时自动执行

MySQL语句在需要时被执行,存储过程也是如此。但是,如果你想要某条语句(或某些语句)在事件发生时自动执行,可能就需要用到触发器了。

所有这些例子的共同之处是它们都需要在某个表发生更改(增删改)时自动处理。这确切地说就是触发器

如何使用触发器?

创建触发器

在这里插入图片描述

USE mysql_must_study;

DELIMITER $$
$$
CREATE TRIGGER newproduct
AFTER INSERT
ON products FOR EACH ROW
SELECT 'Product added' INTO @res;
$$
DELIMITER ;

MYSQL5以后,不允许触发器返回任何结果,因此使用into @变量名,将结果赋值到变量中,用select调用即可。

在这里插入图片描述

修改表后查看res变量值,未修改前是NULL。

SELECT @res;

在这里插入图片描述

只有表才支持触发器,触发器按每个表每个事件每次地定义,每个表每个事件每次只允许一个触发器。

每个表最多支持6个触发器(每条INSERT、UPDATE和DELETE的之前和之后)。单一触发器不能与多个事件或多个表关联,所以,如果你需要一个对INSERT和UPDATE操作执行的触发器,则应该定义两个触发器

在这里插入图片描述

删除触发器

在这里插入图片描述

INSERT触发器

在这里插入图片描述

可以通过insert触发器查询自增的id值

USE mysql_must_study;

DELIMITER $$
$$
CREATE TRIGGER neworder
AFTER INSERT
ON orders FOR EACH ROW
SELECT NEW.order_num INTO @ID;
$$
DELIMITER ;
SELECT @ID;

一开始默认是NULL
在这里插入图片描述

插入后再查看

INSERT INTO orders(order_date,cust_id) VALUES (Now(),10001);

SELECT @ID;

在这里插入图片描述
在这里插入图片描述

DELETE触发器

在这里插入图片描述

USE mysql_must_study;

DELIMITER $$
$$
CREATE TRIGGER deleteorder
BEFORE DELETE 
ON orders FOR EACH ROW
BEGIN 
	INSERT INTO mysql_must_study.archive_orders (order_num,order_date,cust_id)
	VALUES (OLD.order_num,OLD.order_date,OLD.cust_id);
END 
$$
DELIMITER ;

在这里插入图片描述

原本的 archive_orders 表是空的。

现在删除一个订单,被删除的订单到 archive_orders 这来了。

DELETE FROM mysql_must_study.orders
WHERE order_num=20011;

在这里插入图片描述
在这里插入图片描述

UPDATE触发器

在这里插入图片描述

下面的例子保证州名 vend_state 缩写总是大写(不管UPDATE语句中给出的是大写还是小写)

USE mysql_must_study;

DELIMITER $$
$$
CREATE TRIGGER updatevendor
BEFORE UPDATE 
ON vendors FOR EACH ROW
SET NEW.vend_state = upper(NEW.vend_state); $$
DELIMITER ;

更新后

UPDATE mysql_must_study.vendors
SET vend_name='aaa', vend_address='aaa', vend_city='aaa', vend_state='aad', vend_zip='666', vend_country='UU'
WHERE vend_id=1007;

在这里插入图片描述

思维导图–总结

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值