mysql笔记 五 触发器

本文详细介绍数据库触发器的应用场景和技术要点,包括如何创建、使用及删除触发器,以及如何通过触发器实现表变化后的自动响应机制。

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

触发器 trigger枪击 扳机 引线的意思

一触即发

作用:监视某种情况并触发某种操作

应用场景:某些在业务上不可分割的操作逻辑,要同时写多条sql语句 可以用触发器

我们可以监视某表的变化,当发生某种变化时候 触发某个操作

触发器:

能监视:增、删、改

能触发:增、删、改

触发器 监视    监视事件  增删改 监视事件 after (发生之后)/before(发生之前)  触发事件 增删改

之后:比如你吃好饭之后,出去就要收钱

之前:比如你进公园之前,要票

创建触发器

监视地点  表名

监视事件 insert/update/delete

监视事件  alter/before

查看触发器 show triggers;

Create trigger  triggerName 

Alter/before  insert/update/delete on 表名

For each row   这句话是行触发器 mysql里面没有表触发器

Begin

   Sql 语句 一句或者多句 必须是 insert/update/delete  ;必须是分号结束

End

写触发器的时候 先 delimiter  $  设置$是结束符

create trigger  tg1 

after insert on o

for each row

begin

update g set num = num - 3 where id = 2;

end;

删除 触发器

Drop trigger  triggerName

如何引用触发器的值

对于insert而言 新增的行 用new来表示

行中的每一列 用 new.列名来表示

create trigger  tg1 

after insert on o

for each row

begin

update g set num = num - new.much where id = new.gid;

end;

删除订单的数量 库存相应改变

create trigger tg3

after delete on o

for each row 

begin

update g set num = num + old.much where id = old.gid;

end$

对于delete 可以用old来表示数据 

对于 insert 可以用new来表示

对于update 可以用修改之前用old 修改之后用new

修改订单 

create trigger tg4

after update on o

for each row

begin

update g set num = num + old.much - new.much where id = old.gid;

end$

反正他是自动查询修改那一行的列 就算你sql语句里面没有列 他也会自己查询

After 是先完成 增删改 然后再触发

触发语句 晚于增删改,无法影响前面的增删改的动作

Before  是先完成触发,然后增删改

触发的语句先于监视的增删改发生

Create  trigger tg5

Before insert on o 

For each row

Begin

 If new.mach  >5 then 

  Set  new.macth = 5;

End if;

Update g set num = num -new.much where id = new.gid;

End$

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值