MySQL8 触发器

-- 创建触发器 更新之后 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代表的是更新之后的数据

你可能感兴趣的:(mysql,数据库,mysql,sql)