DELIMITER $$
CREATE TRIGGER update_fxj_before_update
before UPDATE ON fxj
FOR EACH ROW
BEGIN
-- 仅当 stknew 发生变化时执行
IF NEW.stknew <> OLD.stknew OR (NEW.stknew IS NULL AND OLD.stknew IS NOT NULL) OR (NEW.stknew IS NOT NULL AND OLD.stknew IS NULL) THEN
-- 更新 c2exp12 的逻辑
IF NEW.expma12 = 0 THEN
SET NEW.c2exp12 = 100;
ELSE
SET NEW.c2exp12 = (NEW.stknew - NEW.expma12) / NEW.expma12 * 100;
END IF;
-- 更新 c2exp50 的逻辑
IF NEW.expma50 = 0 THEN
SET NEW.c2exp50 = 100;
ELSE
SET NEW.c2exp50 = (NEW.stknew - NEW.expma50) / NEW.expma50 * 100;
END IF;
END IF;
END$$
DELIMITER ;
运行报错:
Updating of NEW row is not allowed in after trigger