mysql触发器 for each row解释
create trigger mytrigger alert insert on t_a for each rowbegin insert into t_b set name=new.name, set number=new number;程序体或者是 set @name=new.name; set @number=new.nu
create trigger mytrigger alert insert on t_a for each row
begin
insert into t_b
set name=new.name,
set number=new number;
程序体或者是
set @name=new.name;
set @number=new.number;
insert into t_b (name,number) values (@name,@number);
end
foreachrow每行受影响,触发器都执行,叫行级触发器。
oracle触发器中分行级触发器和语句级触发器,可不写foreachrow,无论影响多少行都只执行一次。
mysql不支持语句触发器,所以必须写foreachrow;
触发器的old和new
after触发器—是在记录操纵之后触发,是先完成数据的增删改,再触发,触发的语句晚于监视的增删改操作,无法影响前面的增删改动作
before触发器—是在记录操纵之前触发,是先完成触发,再增删改,触发的语句先于监视的增删改,我们就有机会判断,修改即将发生的操作,如:我们在触发之前需要判断new值和old值的大小或关系,如果满足要求就触发,不通过就修改再触发;如:表之间定义的有外键,在删除主键时,必须要先删除外键表,这时就有先后之分,这里before相当于设置了断点,我们可以处理删除外键。
对于INSERT语句, 只有NEW是合法的;
对于DELETE语句,只有OLD才合法;
对于UPDATE语句,NEW、OLD可以同时使用。
更多推荐
所有评论(0)