触发器是一个命名的数据库对象,它和一个表关联。当一个特殊的事件发生在该表时,触发器就会被激活。触发器常用于保证数据的一致性操作
1.触发器的创建
触发器必须和某个持久表关联,它不能和某个临时表或者视图关联。同时创建触发器需要权限Trigger权限。根据DEFINER的值不同,可能还需要管理员权限。
触发器的创建语法:
CREATE
[DEFINER = { user | CURRENT_USER }]
TRIGGER trigger_name
trigger_time trigger_event
ON tbl_name FOR EACH ROW
[trigger_order]
trigger_body
trigger_name:表名,不能为视图或临时表名
trigger_time: 触发动作的时间,{before|after}
trigger_event:可以激活触发器的操作,{update|delete|insert }
trigger_body: begin ..end语法块
在语句块中我们可能会需要对数据做修改。这样就需要new ,old 来标识被修改或新增的数据
new(insert,update)
标识 更新后 或 新增 的数据。trigger_event为insert或者update时,才可以引用new
old(delete,update)
表示 要删除的 或 修改前 的数据。所以只有trigger_event为delete或者update时,才可以引用old。
2.触发器的删除
DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name
3.触发器查询
SHOW TRIGGERS [{FROM|in} db_name] [like_or_where]
- trigger:触发器的名称年
- evnet: 引起触发器激活的操作。update,delete,insert
- table: 定义触发器的表
- statement:创建触发器时所写的语句
- timing:触发是否在触发事件之前或之后激活。after,before
- created:创建时间
- definer:创建者
- sql_mode: 触发器执行时有效的sql模式