1 MySQL触发器的格式:
create trigger <触发器名称>
{before | after}
{insert | update | delete}
on <表名>
for each row
<触发器SQL语句>
2 MySQL触发器语法说明:
(1) create trigger <触发器名称>:
创建一个新的触发器,并指定触发器的名称
(2){before | after}:
用于指定在insert、update或delete语句执行前触发还是在语句执行后触发
(3) on <表名>:
用于指定相应的表名
(4)fore each row:
触发器的执行间隔,for each row通知触发器每隔一行执行一次动作
(5)<触发器SQL语句>:
触发器要执行的SQL语句,如果该触发器要执行多条SQL语句,要将多条语句放在begin...end块中
3 示例:创建触发器,向test1表插入数据,test2表中的num字段就加一
delimiter |
DROP TRIGGER IF EXISTS t_beforeinsert_on_test1;create trigger t_beforeinsert_on_test1
BEFORE INSERT on test1
for each row
update test2 set num = num + 1;
delimiter ;
4 注意问题:
(1)只有表支持触发器,视图及临时表都不支持;
(2)每个表最多支持6个触发器
(3)单一触发器不能与多个事件或多个表关联
(4)对于INSERT而言,新增的行用NEW来表示,行中的没一列的值,用NEW.列名来表示;
对于DELETE而言,删除的行用OLD来表示
对于UPDATE而言, 更新前的用OLD来表示,更新后的用NEW来表示