MySQL5.7 支持一个表有多个INSERT/DELETE/UPDATE触发器

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS AI 助手,专业版
简介:

在MySQL5.6版本里,不支持一个表有多个INSERT/DELETE/UPDATE触发器。


例如创建t1表两个INSERT的触发器:

1
2
3
4
5
6
7
8
9
10
11
DELIMITER $$
USE ` test `$$
DROP TRIGGER /*!50032 IF EXISTS */ `t1_1`$$
CREATE
     /*!50017 DEFINER =  'admin' @ '%'  */
     TRIGGER `t1_1` AFTER INSERT ON `t1` 
     FOR EACH ROW BEGIN
INSERT INTO t2( id ,NAME) VALUES(new. id ,new.name);
     END;
$$
DELIMITER ;
1
2
3
4
5
6
7
8
9
10
11
DELIMITER $$
USE ` test `$$
DROP TRIGGER /*!50032 IF EXISTS */ `t1_2`$$
CREATE
     /*!50017 DEFINER =  'admin' @ '%'  */
     TRIGGER `t1_2` AFTER INSERT ON `t1` 
     FOR EACH ROW BEGIN
INSERT INTO t3( id ,NAME) VALUES(new. id ,new.name);
     END;
$$
DELIMITER ;

执行的时候就会报错,如下:

wKiom1Rh1N7A1IG1AAFIsiQVM2A408.jpg


而在MySQL5.7里,已经支持一个表有多个INSERT/DELETE/UPDATE触发器。

wKioL1Rh14PxFBWjAASF3brc-1w673.jpg


参考:

wKiom1Rh2ODQNAUvAADVkfkyxSo692.jpg

wKioL1Rh2UvR9WpUAAEYgJJBZQc045.jpg















本文转自hcymysql51CTO博客,原文链接:http://blog.51cto.com/hcymysql/1575443 ,如需转载请自行联系原作者



相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
5月前
|
SQL 关系型数据库 MySQL
Mysql数据恢复—Mysql数据库delete删除后数据恢复案例
本地服务器,操作系统为windows server。服务器上部署mysql单实例,innodb引擎,独立表空间。未进行数据库备份,未开启binlog。 人为误操作使用Delete命令删除数据时未添加where子句,导致全表数据被删除。删除后未对该表进行任何操作。需要恢复误删除的数据。 在本案例中的mysql数据库未进行备份,也未开启binlog日志,无法直接还原数据库。
|
存储 安全 关系型数据库
2024 Mysql基础与进阶操作系列之MySQL触发器详解(21)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
MySQL触发器的使用场景之数据完整性约束、如何具体创建person的日志表、触发器与存储过程的对比与选择、触发器的性能和注意事项等具体操作详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
关系型数据库 MySQL Shell
MySQL回滚脚本: 误操作delete binlog回滚shell脚本
MySQL回滚脚本: 误操作delete binlog回滚shell脚本
|
SQL 关系型数据库 MySQL
MySQL删除表数据、清空表命令(truncate、drop、delete 区别)
MySQL删除表数据、清空表命令(truncate、drop、delete区别) 使用原则总结如下: 当你不需要该表时(删除数据和结构),用drop; 当你仍要保留该表、仅删除所有数据表内容时,用truncate; 当你要删除部分记录、且希望能回滚的话,用delete;
|
存储 关系型数据库 MySQL
MySQL 中的触发器数量之谜
【8月更文挑战第31天】
306 0
|
SQL 数据采集 关系型数据库
|
存储 SQL 关系型数据库
(十四)全解MySQL之各方位事无巨细的剖析存储过程与触发器!
前面的MySQL系列章节中,一直在反复讲述MySQL一些偏理论、底层的知识,很少有涉及到实用技巧的分享,而在本章中则会阐述MySQL一个特别实用的功能,即MySQL的存储过程和触发器。
427 0
|
存储 SQL 数据库
MySQL设计规约问题之为什么要避免使用存储过程、触发器和函数
MySQL设计规约问题之为什么要避免使用存储过程、触发器和函数
|
存储 SQL 关系型数据库
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】(2)
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】

推荐镜像

更多