MySQL触发器的创建、查看、删除
介绍
表述:顾名思义在条件符合某种情况时,被触发执行的相关操作。
时间:事件发生前before和发生后after
事件:
名称 介绍
update 可用**old**访问旧数据,**new**访问新数据
delete 可用**old**访问旧数据
insert 可用**new**访问新数据
创建触发器:
delimiter // 重定义行结束符
create trigger trigger_name trigger_time trigger_event on table_name for each row
begin
-- 需要执行的sql操作语句
end//
delimiter ;
-- delimiter 用于修改默认的行结束符,由于在触发器中有多条sql语句,他们需要使用分号来结束,但是触发器是一个整体,所以需要先更换默认的行结束符
-- trigger_name 自定义触发器名
-- trigger_time 时间点 before|after
-- trigger_event 事件 delete|update|insert
-- table_name 表名
一个例子:
delimiter //
create trigger t_name after update on sys_role for each row
begin
INSERT INTO `sys_role` (`role_id`, `role_name`, `role_key`, `role_sort`, `data_scope`, `status`, `del_flag`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ('4', '测试角色', 'test', '4', '1', '0', '0', 'admin', '2019-05-14 10:57:34', 'bigadmin', '2019-06-13 15:04:48', '');
end //
delimiter
触发器位置:
在mysql中所有触发器的定义都存在INFORMATION_SCHEMA 数据库的TRIGGERS表格中,可以通过SELECT来查看。
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS ;
TRIGGERS 触发器表说明:
表字段 解释
TRIGGER_SCHEMA 表示触发器所在的数据库
TRIGGER_NAME 后面是触发器的名称
EVENT_OBJECT_TABLE 表示在哪个数据表上触发
ACTION_STATEMENT 表示触发器触发的时候执行的具体操作
ACTION_ORIENTATION ROW ,表示在每条记录上都触发
ACTION_TIMING 表示触发的时刻是AFTER,剩下的是和系统相关的信息
查看触发器:
show triggers; # 查看所有触发器
show create trigger 触发器名; # 查看创建指定的触发器语句
删除触发器:
drop trigger 触发器名;
在使用触发器的时候需要注意,对于相同的表,相同的事件只能创建一个触发器。
及时删除不再需要的触发器。否则会导致继续触发,从而影响数据的完整性。
Tag标签:「触发器 删除 mysql」更新时间:「2021-11-03 16:31:41」阅读次数:「963」