触发器(trigger):监视某种情况,并触发某种操作。
触发器创建语法四要素:1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/before) 4.触发事件(insert/update/delete)
语法:
create trigger triggerName
after/before insert/update/delete on 表名
for each row #这句话在mysql是固定的
begin
sql语句;
我们如何在触发器引用行的值,也就是说我们要得到我们新插入的订单记录中的gid或much的值。
对于insert而言,新插入的行用new来表示,行中的每一列的值用new.列名来表示。
begin
update g set num=num-new.much where id=new.gid;
修改的后的数据,用new来表示,new.列名引用被修改之后行中的值。
begin
update g set num = num+old.much-new.much where id = old.gid/new.gid;
end
先把旧的数量恢复再减去新的数量就是修改后的数量了。
触发器创建语法四要素:1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/before) 4.触发事件(insert/update/delete)
语法:
create trigger triggerName
after/before insert/update/delete on 表名
for each row #这句话在mysql是固定的
begin
sql语句;
end;
对于insert而言,新插入的行用new来表示,行中的每一列的值用new.列名来表示。
begin
update g set num=num-new.much where id=new.gid;
end
对于delete而言:原本有一行,后来被删除,想引用被删除的这一行,用old来表示,old.列名可以引用被删除的行的值。
begin
update g set num = num + old.much where id = old.gid;
end
修改的后的数据,用new来表示,new.列名引用被修改之后行中的值。
begin
update g set num = num+old.much-new.much where id = old.gid/new.gid;
end
先把旧的数量恢复再减去新的数量就是修改后的数量了。