我是靠谱客的博主 能干小蚂蚁,这篇文章主要介绍【数据分析师_02_SQL+MySQL】028_MySQL的触发器(CREATE TRIGGER..AFTER/BEFORE INSERT ON/DELETE ON..FOR EACH ROW..)1 概述2 案例1:创建触发器,现在分享给大家,希望可以做个参考。

MySQL的触发器

  • 1 概述
  • 2 案例1:创建触发器
    • 2.1 创建一个简单的 INSERT触发器
    • 2.2 创建一个变化的 INSERT触发器
    • 2.3 验证以上两个 INSERT触发器的效果
    • 2.4 创建一个变化的 DELETE触发器
    • 2.5 删除触发器
    • 2.6 练习


转载请注明出处 ????!
手动反爬:MySQL的触发器(CREATE TRIGGER…AFTER/BEFORE INSERT ON/DELETE ON…FOR EACH ROW…)
https://blog.csdn.net/Lyun911/article/details/111713606

注:以下使用 MySQL 演示


1 概述

MySQL语句在需要时被执行,存储过程也是如此。但是,如果你想要某条语句(或某些语句)在事件发生时自动执行,怎么办呢?例如:

  • 每当增加一个顾客到某个数据库表时,都检查其电话号码格式是否正确,州的缩写是否为大写
  • 每当订购一个产品时,都从库存数量中减去订购的数量
  • 无论何时删除一行,都在某个存档表中保留一个副本

触发器是MySQL响应以上任意语句而自动执行的一条MySQL语句

2 案例1:创建触发器

2.1 创建一个简单的 INSERT触发器

在我们执行 insert update delete 语句时,自动执行另一组 SQL语句的功能
创建触发器:
(目标:创建一个在 products表中插入内容时,添加 'Product add’这句话到变量 @ee中的 触发器)

create TRIGGER newproduct AFTER INSERT ON products	# 创建一个
FOR EACH ROW SELECT 'Product add' INTO @ee;			# 每创建一列新的内容时,在 @ee中新增 'Product add'

2.2 创建一个变化的 INSERT触发器

将新插入的部分内容加入 @ee中

create TRIGGER newproduct AFTER INSERT ON products
FOR EACH ROW SELECT new.prod_id INTO @ee;			# 将新插入的内容加入 @ee中

将旧的内容加入 @ee中(备份)

create TRIGGER newproduct AFTER INSERT ON products
FOR EACH ROW SELECT old.prod_id INTO @ee;			# 将旧的内容加入 @ee中

注:也可以使用 new.* / old.* 将所有的新/旧内容加入 @ee中

2.3 验证以上两个 INSERT触发器的效果

首先写一个插入数据的测试代码,运行

insert into products
(prod_id, vend_id, prod_name, prod_price, prod_desc)
VALUES
('ANV21', '1001', '3 Ton anvil', '19.99',
'desctibe123 123'
);

查看一下 @ee

SELECT @ee;

2.4 创建一个变化的 DELETE触发器

目标:当删除数据时,备份数据到表 deleteorder中

create TRIGGER deleteorder BEFORE DELETE ON orders
FOR EACH ROW
BEGIN
	insert into archive_orders(order_num, order_date, cust_id)
	values(old.order_num, old.order_date, old.cust_id);
END;

验证一下触发器,首先得创建一个 deleteorder表(空表),而且表结构要和 orders一样:
(相当于 deleteorder表是 orders表的一个备份,然后删除里面的数据)

create table archive_orders as select * from orders;	# 创建一个 orders的备份
delete from archive_orders;								# 删除 archive_orders里面的数据
select * from archive_orders;							# 看看效果

2.5 删除触发器

drop TRIGGER newproduct;

2.6 练习

练习:UPDATE 触发器怎么做?
TIPS:

  • INSERT 是在空的数据位置直接新增数据,因此没有 old.数据
  • DELETE 是在已有数据的位置删除数据,因此有 new.数据,但是不怎么用 old.数据
  • UPDATE 在更新数据时,其实要先删除原数据,之后再新增一个新的数据

最后

以上就是能干小蚂蚁最近收集整理的关于【数据分析师_02_SQL+MySQL】028_MySQL的触发器(CREATE TRIGGER..AFTER/BEFORE INSERT ON/DELETE ON..FOR EACH ROW..)1 概述2 案例1:创建触发器的全部内容,更多相关【数据分析师_02_SQL+MySQL】028_MySQL的触发器(CREATE内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部