【发布时间】:2017-06-15 15:10:10
【问题描述】:
我在 mysql 数据库中有两个表 A 和 B。表 A 具有 brnd_id、R_2000ml。表 B 有diff,val。当R_2000ml 更新时,我正在编写一个触发器来更新表B。我正在计算 NEW.R_2000ml 和 OLD.R_2000ml 的差异,并将结果存储在 diff 列中,并将布尔值作为 1 传递以在表 B 的 val 列中进行更新。
以下是我的触发代码,由于表 B 中的值未更新,因此无法正常工作。
DELIMITER //
DROP TRIGGER IF EXISTS `myTrigger`;
CREATE DEFINER=`root`@`localhost` TRIGGER `myTrigger`
AFTER UPDATE ON `A`
FOR EACH ROW
BEGIN
DECLARE brndid integer;
DECLARE stkdate date;
if NEW.`R_2000ml` <=> OLD.`R_2000ml`
THEN
if NEW.`R_2000ml` > OLD.`R_2000ml`
THEN
update B set diff= NEW.R_2000ml- OLD.R_2000ml,val=1;
END IF;
END IF;
END;//
DELIMITER ;
【问题讨论】:
-
您的触发器应该更新
B中的 all 行。 . .这是你的意图吗? -
表 B 仅包含一行,将用于其他目的。
标签: mysql sql triggers phpmyadmin sql-update