触发器是与表相关的数据对象,在满足条件时触发,可以协助应用在数据库端保证数据的完整性
触发器只能创建在永久表上,不能用于临时表(create temporary table )
create trigger 触发器名
触发时间[before 检查约束前触发 | after检查约束后触发]
触发事件 [insert | delete | update]
on 表名 for each row
delimiter @ drop trigger if exists tg_after_insert@ create trigger tg_after_insert after insert on db.lib for each row begin insert into db.flag (text) values(‘after insert‘); end@ delimiter ;
查看所有的触发器:
show triggers;
insert into db.lib values(1,1,‘aa‘) on duplicate key update book_name=‘aa‘;
当添加了duplicate key 后,执行insert into 操作插入一条相同主键的记录时,会调用3个触发器
如果插入的数据在已有数据中没有相同数据时,只触发两个触发器
注:在使用duplicate 操作时,注意触发器的触发情况
删除触发器:drop trigger 触发器名
查看触发器:show triggers;
desc triggers;
select * from information_schema.traggers;
注:不能在触发器中显式或隐式开始或结束事务:start transaction commit rollback
当触发器触发前的任意一步发生错误时,都将不会继续执行后续的操作。