我在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 ;
答案 0 :(得分:0)
在if子句中使用“&lt; =&gt;”,此运算符执行与=运算符相等的比较,因此您应该使用&lt;&gt;或!=:
if NEW.`R_2000ml` <> OLD.`R_2000ml`
或
if NEW.`R_2000ml` != OLD.`R_2000ml`