触发器
Posted cyq0528
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了触发器相关的知识,希望对你有一定的参考价值。
触发器是用户得以在关系表上的一类有事件驱动的数据库对象,也是一种保证数据完整性的方法;
触发器一旦定义,无需用户调用,任何对表的修改操作均由数据库服务器自动激活相应的触发器。
触发器的主要作用是实现主键和外键不能保证的复杂的参照关系性和数据的一致性,从而保护表中数据;
一,创建触发器
语法:
create trigger 触发器名称 trigger_time 触发事件
on 表名 for each row 触发器主体
触发器名称:名称在当前数据库中必须是唯一的
解释:
trigger_time:指定触发器被触发的时刻,它有两个选项关键字 defore 和关键字 after 用于表示触发器是在激活它的语句之前或者之后触发。如果希望验证新数据是否满足使用限制,则使用 before
触发事件:用于指定触发事件,即指定激活触发器的语句的种类,可以是 insert 表示将新的数据行插入到表时激活触发器; update 表示更改表中某一行数据时激活触发器;delete 表示从表中删除某一行数据时激活触发器。
表名:与触发器相关联的表名,必须引用永久性表且同一个表不能拥有两个具有相同触发时刻和事件的触发器
for each row:指定对于受触发事件影响的每一行都要激活触发器的动作。例如 用 insert 向一个表中插入多行数据时,触发器会对每一行数据的插入都执行相应触发器动作。
触发器主体:指定触发器动作主体。包含触发器激活时将要执行的mysql语句。如果执行多个语句使用 begin...end
触发器的创建中,每个表每个事件只允许一个触发器。因此每个表最多支持 6 个触发器,即每条 insert ,update和 delete的“之前”和之后。
单一触发器不能与多个事件或多个表相连,例如需要一个对 insert 和 update 操作执行的触发器,应该定义两个;
以上是关于触发器的主要内容,如果未能解决你的问题,请参考以下文章