MySQL 触发器

在MySQL中,触发器是一种特殊的存储过程,用于在特定事件(如INSERT、UPDATE或DELETE)发生时自动执行操作。本文展示了如何创建触发器来记录学生表的变化,例如在添加新学生信息时自动在日志表中添加条目。触发器使用NEW和OLD关键字来引用行的新旧值,方便数据处理和比较。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

MySQL Wallpaper (1920x1080) | Incursus

 在MySQL中,触发器(Trigger)是一种特殊的存储过程,用于在数据库表上定义在特定事件发生时自动执行的操作。


数据准备

-- 创建学生表
create table students(
	stu_num char(8) primary key,
	stu_name varchar(10) not null,
	stu_gender char(2) not null,
	stu_age int not null,
	cid int, 
);


-- 创建日志表
create table stulogs(
id int primary key auto_increment,
time timestamp,
log_text varchar(200)
);

创建触发器

语法:

create trigger trigger_name
<before|after>  -- 定义插法时机
<insert|update|delete>  -- 定义DML类型
on table_name
for each row   -- 声明为行级触发器(只要操作一条记录触发器执行一次)
sql_statement  -- 触发器操作

示例:

-- 创建触发器,学生表发生添加操作时,日志表添加一条日志
create trigger tri_log 
after insert on students 
for each row 
insert into stulogs(time,log_text) value(now(),concat('添加',new.stu_num,'学生信息'))

查看触发器

show triggers;

测试触发器

-- 向学生表添加一条信息
insert into students(stu_num,stu_name,stu_gender,stu_age) 
value('20220019','小马','女',17);

-- 查看日志表
select *from stulogs;

id|time               |log_text      |
--+-------------------+--------------+
 1|2023-07-29 17:30:10|添加20220019学生信息|

删除触发器

drop trigger trigger_name;

NEW和OLD

在MySQL触发器中,NEW和OLD是两个特殊的关键字,用于引用触发器所关联的行的新值和旧值。它们通常在触发器中用于比较和处理数据。

  • NEW表示触发器所关联的行的新值。在INSERT触发器中,它代表新插入的行;在UPDATE触发器中,它代表被更新的行的新值。
  • OLD表示触发器所关联的行的旧值,在UPDATE和DELETE触发器中可用。在UPDATE触发器中,它代表被更新的行的旧值;在DELETE触发器中,它代表被删除的行的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Indifferent-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值