触发器trigger

查看当前库下的触发器

use 数据库名;

show triggers;

查询所有触发器

SELECT * FROM information_schema.`TRIGGERS`

表字段	解释
TRIGGER_SCHEMA	表示触发器所在的数据库
TRIGGER_NAME	后面是触发器的名称
EVENT_OBJECT_TABLE	表示在哪个数据表上触发
ACTION_STATEMENT	表示触发器触发的时候执行的具体操作
ACTION_ORIENTATION	ROW ,表示在每条记录上都触发
ACTION_TIMING	表示触发的时刻是AFTER,剩下的是和系统相关的信息

show create trigger 触发器名; # 查看创建指定的触发器语句

drop trigger 触发器名;

创建触发器

DELETE

DELIMITER $$ --将结束符定义成$$ \
CREATE TRIGGER `access`.`trigger_not_allow_del` \
BEFORE DELETE ON `ip_info` FOR EACH ROW \ --在删除merchant_objects表数据之前触发
BEGIN \
	DECLARE msg varchar(255); \--定义一个msg变量
	IF old.id=45 THEN \ --old为要删除的表  如果该条数据id=45 报出错误信息
	SET msg="该条数据禁止删除"; \
	SIGNAL SQLSTATE "HY000" SET MESSAGE_TEXT = msg; \--在删除数据时引发 SQLSTATE HY000 的错误以及报错信息
	end if;
END $$ \
DELIMITER ;--将结束符定义成;

注意:

1、 在使用触发器的时候需要注意,对于相同的表,相同的事件只能创建一个触发器。

2、 及时删除不再需要的触发器。否则会导致继续触发,从而影响数据的完整性。


触发器trigger
https://www.hechunyu.com/archives/chu-fa-qi-trigger
作者
chunyu
发布于
2022年08月17日
许可协议