trigger触发器:监视某种情况并且触发某些操作。
监视的情况:增删改。 触发的操作:增删改。
语法:
create trigger name
[after|before] [insert/update/delete] on tablename
for each row #行触发器
begin
xxx; #如果是多个触发语句的话,要先使用delimiter把';'号换成非分界符。
xxx
end.
删除trigger:
drop trigger name;
在触发器中引用行的值。
对于insert事件, 新增的行用new来表示。行中的每一列用new.列名标示。
如:触发的语句可以写成 update table1 set num=num-new.number where id=new.ref_id
对于delete事件,删除的行用old表示。删除的行用old.列名标示。
对于update事件,修改前的行用old标示,修改后的行用new 标示,
before和after的区别
after:先增删改,在触发。无法影响触发的动作。
before:先触发,在完成增删改。使我们还有机会影响触发的动作。