通过触发器监控某表的指定字段的变化并删除另一张表的对应的行记录
业务场景:
催单自动取消–当订单表(kriswu_orders)中的状态(status)字段进行更改时,即订单状态发生变化时,就去删除催单表(kriswu_client_urge)中的该订单对应的催单记录
一、触发器sql
create trigger TR_KrisWuOrders_Change
after update on kriswu_orders
for each row
begin
if (NEW.status != OLD.status) then
delete from kriswu_client_urge where kriswu_client_urge.csp_order_id=OLD.csp_order_id;
end if;
end;
二、深入理解触发器
1.触发器是基于事件的,主要的事件也就是MySQL的增删改操作,即insert,delete,update。
2.触发器语句中使用了两种特殊的表:deleted 表和 inserted 表。
2.1.插入操作(Insert)
Inserted表有数据,Deleted表无数据
2.2.删除操作(Delete)
Inserted表无数据,Deleted表有数据
2.3.更新操作(Update)
Inserted表有数据(新数据),Deleted表有数据(旧数据)
3.修改行的数据用NEW和OLD
NEW代表修改后的行数据
OLD代表修改前的行数据