MySQL触发器更新当前表中更新值的另一个表

时间:2017-01-30 12:44:35

标签: mysql sql triggers phpmyadmin sql-update

我在mysql数据库中有两个表A和B.表A有brnd_idR_2000ml。表B包含diffval。我正在编写一个触发器,在R_2000ml更新时更新表B.我正在计算NEW.R_2000mlOLD.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 ;

1 个答案:

答案 0 :(得分:0)

在if子句中使用“&lt; =&gt;”,此运算符执行与=运算符相等的比较,因此您应该使用&lt;&gt;或!=:

if NEW.`R_2000ml` <> OLD.`R_2000ml`

if NEW.`R_2000ml` != OLD.`R_2000ml`