MySQL 触发器

Posted 落叶成冰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 触发器相关的知识,希望对你有一定的参考价值。

查看触发器

show triggers;

删除触发器

drop trigger [if exists] [schema_name.]trigger_name;

修改触发器

触发器不能被更新或者覆盖,若要修改,则需先删除然后再创建。


创建触发器

create trigger TRIGGER_NAME
after | before				-- 触发时间
insert | update | delete	-- 监视操作
on TBL_NAME					-- 监视哪个表
for each row				-- 行级触发器
begin
	statement;
	...
end;

监视的操作:

insert | update | delete

触发的操作:

insert | update | delete


触发器中可以使用的行变量:

insert:   new.COLUMN_NAME

update: new.COLUMN_NAME  或者  old.COLUMN_NAME

delete:  old.COLUMN_NAME


注意:

1. 只有表支持触发器,视图、临时表均不支持

2. 每个表最多能创建 6 个触发器,[ after | before ] X [ insert | update | delete ]

3. 对于 before 类型的触发器, 如果 before 触发器执行失败, 则触发触发器的 SQL 也会执行失败

4. 若 SQL 执行失败, 则 after 型的触发器不会执行

5. 对于事务性表 ( InnoDB 引擎), 如果触发器中的 SQL 或者引发触发器的 SQL 执行失败, 则事务会回滚. 对于非事务

性表, 即使语句失败, 失败之前所做的任何修改依然有效.


以上是关于MySQL 触发器的主要内容,如果未能解决你的问题,请参考以下文章

怎么在Dbeaver中创建mysql 触发器

请教mysql中触发器的写法

mysql触发器使日期相加减?

mysql添加触发器后无法插入数据的问题

MySQL触发器

猎八哥浅谈MYSQL触发器