MySQL——触发器(trigger)基本结构

2024-06-17 15:36

本文主要是介绍MySQL——触发器(trigger)基本结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


1、修改分隔符符号

delimiter $$

$$可以修改

2、创建触发器函数名称

create trigger 函数名 

3、什么样在操作触发,操作哪个表

after :……之后触发 

before :……之后触发 

insert :……之后触发 

update :……之后触发 

delete :……之后触发 


on 表名

实例

after insert on user

4、for each row 声明每次触发都被执行

5、 开始触发器代码

begin

6、 触发器触发后执行代码块

7、 结束触发器

end ;

8、 修改分隔符

$$

delimiter ; 

delimiter $$  -- 分隔符
create trigger after_inster_user -- 创建触发器的名称
after insert on `user` -- 用户表执行插入操作之后被出发的触发器
for each row -- 每行数据都要进行触发
begin#insert into `user` values(0,'散兵','password88','sanbing@qq.com','1234567890','2024-06-17 22:07:39');  #能添加但执行插入语句时报错1442 - Can't update table 'user' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.#1. MYSQL中触发器中不能对本表进行 insert ,update ,delete操作,以免递归循环触发#2. 对于update 只能用set进行操作,insert与delete只能借助第二张表才能实现需求,如果可以最好用存储过程代替触发器  -- 执行代码块INSERT INTO user_wallet (user_id, balance)  -- 在user_wallet表中插入一行数据VALUES (NEW.user_id, 0.00);  -- 使用NEW.user_id作为新插入行的user_id,balance为0.00
end ;
$$
delimiter ; -- 结束$$的有效性更换成;
delimiter $$ 
create trigger after_insert_user
after insert on `user`
for each row
beginsignal sqlstate '45000' set massage_text = '我们人为的停止了数据commit'; # signal sqlstate '45000' 代表错误,会停止操作,包含插入语句也会取消commit操作
end;
$$
delimiter $$

delete from `user` where user_id=5;
# 报错,删除用户前需要删除从表的数据。
delimiter $$ 
create trigger delete_info_user
before delete on `user`
for each row
begindelete from user_wallet where user_id=old.user_id;delete from user_wallet_log where user_id=old.user_id;
end;
$$
delimiter ;delete from `user` where user_id=5;
#成功

这篇关于MySQL——触发器(trigger)基本结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1069839

相关文章

Mysql 中的多表连接和连接类型详解

《Mysql中的多表连接和连接类型详解》这篇文章详细介绍了MySQL中的多表连接及其各种类型,包括内连接、左连接、右连接、全外连接、自连接和交叉连接,通过这些连接方式,可以将分散在不同表中的相关数据... 目录什么是多表连接?1. 内连接(INNER JOIN)2. 左连接(LEFT JOIN 或 LEFT

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

结构体和联合体的区别及说明

《结构体和联合体的区别及说明》文章主要介绍了C语言中的结构体和联合体,结构体是一种自定义的复合数据类型,可以包含多个成员,每个成员可以是不同的数据类型,联合体是一种特殊的数据结构,可以在内存中共享同一... 目录结构体和联合体的区别1. 结构体(Struct)2. 联合体(Union)3. 联合体与结构体的

mysql重置root密码的完整步骤(适用于5.7和8.0)

《mysql重置root密码的完整步骤(适用于5.7和8.0)》:本文主要介绍mysql重置root密码的完整步骤,文中描述了如何停止MySQL服务、以管理员身份打开命令行、替换配置文件路径、修改... 目录第一步:先停止mysql服务,一定要停止!方式一:通过命令行关闭mysql服务方式二:通过服务项关闭

SQL Server数据库磁盘满了的解决办法

《SQLServer数据库磁盘满了的解决办法》系统再正常运行,我还在操作中,突然发现接口报错,后续所有接口都报错了,一查日志发现说是数据库磁盘满了,所以本文记录了SQLServer数据库磁盘满了的解... 目录问题解决方法删除数据库日志设置数据库日志大小问题今http://www.chinasem.cn天发

mysql主从及遇到的问题解决

《mysql主从及遇到的问题解决》本文详细介绍了如何使用Docker配置MySQL主从复制,首先创建了两个文件夹并分别配置了`my.cnf`文件,通过执行脚本启动容器并配置好主从关系,文中还提到了一些... 目录mysql主从及遇到问题解决遇到的问题说明总结mysql主从及遇到问题解决1.基于mysql

MySQL的索引失效的原因实例及解决方案

《MySQL的索引失效的原因实例及解决方案》这篇文章主要讨论了MySQL索引失效的常见原因及其解决方案,它涵盖了数据类型不匹配、隐式转换、函数或表达式、范围查询、LIKE查询、OR条件、全表扫描、索引... 目录1. 数据类型不匹配2. 隐式转换3. 函数或表达式4. 范围查询之后的列5. like 查询6

Linux下MySQL8.0.26安装教程

《Linux下MySQL8.0.26安装教程》文章详细介绍了如何在Linux系统上安装和配置MySQL,包括下载、解压、安装依赖、启动服务、获取默认密码、设置密码、支持远程登录以及创建表,感兴趣的朋友... 目录1.找到官网下载位置1.访问mysql存档2.下载社区版3.百度网盘中2.linux安装配置1.

PostgreSQL如何查询表结构和索引信息

《PostgreSQL如何查询表结构和索引信息》文章介绍了在PostgreSQL中查询表结构和索引信息的几种方法,包括使用`d`元命令、系统数据字典查询以及使用可视化工具DBeaver... 目录前言使用\d元命令查看表字段信息和索引信息通过系统数据字典查询表结构通过系统数据字典查询索引信息查询所有的表名可

PostgreSQL如何用psql运行SQL文件

《PostgreSQL如何用psql运行SQL文件》文章介绍了两种运行预写好的SQL文件的方式:首先连接数据库后执行,或者直接通过psql命令执行,需要注意的是,文件路径在Linux系统中应使用斜杠/... 目录PostgreSQ编程L用psql运行SQL文件方式一方式二总结PostgreSQL用psql运