触发器
作者:互联网
定义
是指一段代码,当触发某个事件的时候,自动执行该段代码。
应用场景
1.数据库中相关表实现级联
2.实时监控某张表的字段数据改变,然后对应执行某些操作
3.自动生成某些业务编号
触发器主要有
【After|before】【insert|update|delete】
1.触发器查看
show triggers或者show triggers from user_db;
通过information_schema.triggers表查看触发器:
select * from information_schema.triggers;
2.删除trigger
drop trigger if exists trigger_name
3.完整的测试
drop table if exists tmp1;
drop table if exists tmp2;
create table tmp1 (id int, name varchar(128)) default charset='utf8';
create table tmp2 (fid int, name varchar(128)) default charset='utf8';
insert into tmp1 values(1, '爱E族');
insert into tmp2 values(1, '爱E族');
创建触发器
DELIMITER $
drop trigger if exists tmp1_update$
create trigger tmp1_update after update on tmp1
for each row
begin
update tmp2 set name=new.name where fid=new.id;
end$
DELIMITER ;
创建触发器
DELIMITER $
drop trigger if exists tmp1_insert$
create trigger tmp1_insert before insert on tmp1
for each row
begin
set new.n2 = new.n1*5;
end$
DELIMITER ;
更新操作与if结合
if old.type=1 then
update table ...;
elseif old.type=2 then
update table ...;
end if;
CREATE trigger updatetbl_slope
AFTER update on tbl_slope for each row
BEGIN
if EXISTS(SELECT * FROM user A WHERE A.ID=new.UNIFIEDCODE LIMIT 1)
THEN
update user set LastTime=NOW() where ID=NEW.UNIFIEDCODE;
else
insert into checkupdates VALUES(new.UNIFIEDCODE, ‘TBL_AVALANCHE’, NOW());
END if;
END
注意
在使用触发器的时候,我们常常会考虑到,是否可一在触发创建的时候先检查是否有该数据,如果没有就创建。反之则更新数据。
这个在触发器中也是可以实现的,如:AFTER update|create on tbl_slope for each row。但是这样会是得模糊了触发器的真实实现,
我个人觉得还是拆开更简洁,更易于维护。
标签:insert,触发器,trigger,new,table,tmp1 来源: https://www.cnblogs.com/topass123/p/16523203.html