MySQL触发器

语法:

一、创建触发器:

create trigger  触发器名字

before/after   insert/update/delete

on 表名  for each row  --行级触发器,每行有变化都会被触发

begin

          trigger_stmt;

end;

说明:

before/after:指定是在之前还是之后触发

insert/update/delete:指定当表发生什么类型(insert/update/delete)的操作时会触发

二、查看触发器

show triggers;

三、删除触发器

drop trigger [schema_name.]trigger_name; --如果没有指定schema_name,默认为当前数据库。

实践:

通过触发器记录tb_user表的数据变更日志,将变更的日志插入到日志表user_logs中,包含增加、修改、删除

1、准备一张user_logs表存储user表的数据变更日志: 

2、创建user表insert时的触发器,注意new指即将插入的或是已经新增的的数据:

3、创建user表update时的触发器,注意old指的是upadte前的数据,new是指update后的数据:

4、创建user表delete时的触发器,注意old是要删除的或已经删除的那个数据

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL 触发器是一个与表相关联的数据库对象,它在特定的INSERT、UPDATE或DELETE语句执行时自动执行。MySQL 触发器可以用于实现一些复杂的业务逻辑,比如在插入或更新数据时自动计算某些值、限制特定操作的执行等。 MySQL 触发器分为三种类型:BEFORE、AFTER和INSTEAD OF。BEFORE触发器在执行INSERT、UPDATE或DELETE语句之前执行,可以用于验证数据的合法性、修改数据等;AFTER触发器在执行INSERT、UPDATE或DELETE语句之后执行,可以用于记录日志、更新相关数据等;INSTEAD OF 触发器可以在执行INSERT、UPDATE或DELETE语句时替换原始的操作,可以用于实现自定义的数据更新逻辑。 MySQL 触发器的语法如下: ```sql CREATE TRIGGER trigger_name BEFORE|AFTER|INSTEAD OF INSERT|UPDATE|DELETE ON table_name FOR EACH ROW BEGIN -- 触发器执行的 SQL 语句 END; ``` 其中,`trigger_name` 是触发器的名称,`BEFORE|AFTER|INSTEAD OF` 指定触发器的类型,`INSERT|UPDATE|DELETE` 指定触发器要监听的操作类型,`table_name` 是要监听的表名,`FOR EACH ROW` 表示对表中每一行数据都执行触发器逻辑,`BEGIN` 和 `END` 之间是触发器要执行的 SQL 语句。 例如,下面的代码创建了一个在 `users` 表上监听 INSERT 操作的 BEFORE 触发器,用于自动给 `created_at` 字段赋值当前时间戳: ```sql CREATE TRIGGER users_created_at BEFORE INSERT ON users FOR EACH ROW BEGIN SET NEW.created_at = NOW(); END; ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值