1.触发器的作用
2.delimiter的作用
3.触发器的实现
4.new 和 old 的使用
1.触发器的作用:
触发器用于操作一个表的时候同时能够操作另一个表。例如,在A表中,添加一个信息,然后同时自动在B表中添加相同的信息。
当然在A表中,添加数据时,同时自动在B表中删除数据也可以。反正就是只要 发生对A表指定的操作,就会触发设定好的对B表的操作。
这样做,当两个表有关联时,可以很方便。
2.delimiter的作用:
3.触发器的实现:
触发器的创建例子:
第一行:表示分隔符换成 $$
第二行:create trigger 为固定格式,t1 为触发器的名字,before insert on zje 表示当 zje表 进行 insert 操作 之前。触发触发器语句。
当然,before可以换成after 表示触发器在对zje表操作之后执行。而 insert 的位置只有(insert,update,delete)这三个能填,select不能。
第三行:for each row 是固定格式。
第四行和第六行:begin 和 end 也是固定格式。而end后跟的必须是分隔符。
第五行:是触发器执行的语句
上述的全部语句表示:创建一个触发器,作用为 在对 zje 表进行insert 之前,把eva表中 chin字段少于60的数据删除。
查看是否创建了触发器:
show triggers from zje; //表示查看 zje表中的所有触发器。
删除触发器:
drop trigger trigger_name ; //删除名为 trigger_name的触发器
4.new和old的使用:
如:
delimiter $$
create trigger t1 before update on zje
for each row
begin
set @arg1 = new.math;
set @arg2 = old.math;
end$$
delimiter ;
例如一开始 zje中xiaoming的mat成绩是59,对zje表进行,update zje set math = math + 1 where name=“xiaoming”;
而arg1 = 60,而arg2 = 59;
换言之,new表示对表zje操作之后的数,而old则是表zje在被操作之前的数