MySQL-触发器

MySQL触发器是在特定数据库操作(INSERT、UPDATE、DELETE)前或后自动执行的一段代码,用于实现数据的自动处理。本文详细介绍了触发器的创建、查看和删除,并通过实例展示了如何在用户表中创建一个BEFORE DELETE触发器,将要删除的数据复制到另一个表中以备恢复。触发器使用了OLD关键字来访问被删除行的数据,且OLD值在触发器中为只读。

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

触发器(trigger)MySQL语句在需要被执行时通过触发器来执行某些语句。
响应(增删改)而自动执行的一条或一组定义在begin 和 end之间的mySQL语句。

触发器语法

CREATE TRIGGER trigger_name trigger_time trigger_event
 ON tbl_name FOR EACH ROW trigger_stmt
说明:
# trigger_name:触发器名称
# trigger_time:触发时间,可取值:BEFORE或AFTER
# trigger_event:触发事件,可取值:INSERT、UPDATE或DELETE。
# tb1_name:指定在哪个表上
# trigger_stmt:触发处理SQL语句。
-- 查看所有的 触发器
show triggers\G;
-- 删除触发器
drop trigger trigger_name;
-- 创建⼀个删除的触发器,在users表中删除数据之前,往del_users表中添加⼀个数据
-- 1,复制当前的⼀个表结构
create table del_users like users;
-- 2,创建 删除触发器 注意在创建删除触发器时,只能在删除之前才能获取到old(之前的)数据
\d //
create trigger deluser before delete on users for each row
begin
insert into del_users values(old.id,old.name,old.age,old.account);
end;
//
\d ;
-- 3 删除users表中的数据
  • 在INSERT触发器代码内,可引⽤⼀个名为NEW的虚拟表,访问被 插⼊的⾏;
  • 在DELETE触发器代码内,可以引⽤⼀个名为OLD的虚拟表,访问被删除的⾏;
    1. OLD中的值全都是只读的,不能更新。
    2. 在AFTER DELETE的触发器中⽆法获取OLD虚拟表
  • 在UPDATE触发器代码中
    1. 可以引⽤⼀个名为OLD的虚拟表访问更新以前的值
    2. 可以引⽤⼀个名为NEW的虚拟表访问新 更新的值;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值