MySql 触发器
⒈是什么?
触发器就是某个表发生一个事件(增删改操作),然后自动的执行预先编译好的SQL语句,执行相关操作。触发器事件跟触发器中的SQL语句是原子性的(要么同时执行,要么同时不执行),这样保证了数据的完整性。
⒉创建触发器
1.语法
drop trigger if exists databaseName.tri_Name; create trigger tri_Name -- tri_Name代表触发器名称 tirgger_time trigger_event on tableName -- tirgger_time为触发时机,可选值有after/before,trigger_event为触发事件,可选值有insert/update/delete for each row -- 这句话在mysql是固定的,表示任何一条记录上的操作满足触发事件都会触发该触发器。 begin sql语句; end
2示例
①insert类型触发器
1 drop trigger if exists study.tgr_users_insert; 2 create trigger tgr_users_insert 3 before insert on users 4 for each row 5 begin 6 set new.username='fanqi'; -- NEW用来表示将要(before)或已经(after)插入的新数据。 7 end;
②delete类型触发器
1 drop trigger if exists study.tgr_users_delete; 2 create trigger tgr_users_delete 3 before delete on users 4 for each row 5 begin 6 declare oldusername varchar(20) default 'fan'; 7 set oldusername = old.username; -- old用来表示将要或已经被删除的原数据。 8 end;
③update类型触发器
1 drop trigger if exists study.tgr_users_update; 2 create trigger tgr_users_update 3 before update on users 4 for each row 5 begin 6 declare oldusername varchar(20) default 'fan'; 7 set oldusername = old.username; -- old用来表示将要或已经被修改的原数据 8 set new.username= concat(oldusername,new.username); -- new用来表示将要或已经修改为的新数据 9 end;
⒊查看触发器
1 show triggers from databaseName;
⒋删除触发器
1 drop trigger if exists databaseName.tri_Name;