MySQL8 触发器

本文介绍了数据库触发器的使用,特别是在更新操作后的处理。详细阐述了`AFTER UPDATE`触发器的用法,以及如何根据不同的业务条件更新关联表的数据。通过示例展示了如何在更新`BIZ_ENTITY_POUNDS`表后,依据`new`和`old`来改变`BIZ_ENTITY_PICKUP_BILL`和`BIZ_ENTITY_LOGISTICS`表中的`iszc`字段值。
摘要由CSDN通过智能技术生成
-- 创建触发器 更新之后 new 修改后的数据 ;old 是老数据
-- after update 表示 更新后触发
-- after insert 表示 插入后触发
-- before update 表示 更新之前
-- before insert 表示 插入执行
-- 注意 触发器不能操作本表,会造成循环引用 例如 on后边的是BIZ_ENTITY_POUNDS,所以不能再操作这个表
DROP TRIGGER IF EXISTS T_CHANGE_ISCZ;
CREATE TRIGGER T_CHANGE_ISCZ 
AFTER UPDATE ON BIZ_ENTITY_POUNDS
FOR EACH ROW 
BEGIN
	DECLARE pz VARCHAR(50);-- 声明一个变量
	SELECT tareweight INTO pz FROM BIZ_ENTITY_POUNDS_MATS WHERE bizid=old.id;-- 给声明的变量赋值
	-- 判断条件
	if(new.billstatus='01' and new.compcode <> '001' and pz IS NOT NULL ) THEN
		if(new.transtype='car') THEN 
			UPDATE BIZ_ENTITY_PICKUP_BILL SET iszc='2' WHERE id=old.refobjid;
		end if;
		if(new.transtype='logistics') THEN
			UPDATE BIZ_ENTITY_LOGISTICS SET iszc='2' WHERE id=old.refobjid;
		end if;
	end if;		
END;
-- new 和 old 代表 on 的表 实例中是指 BIZ_ENTITY_POUNDS
-- old 是没有更新后的表数据,new代表的是更新之后的数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值