触发器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