【问题标题】:MySQL trigger for updating another table on updating value in current tableMySQL 触发器用于在更新当前表中的值时更新另一个表
【发布时间】:2017-06-15 15:10:10
【问题描述】:

我在 mysql 数据库中有两个表 A 和 B。表 A 具有 brnd_idR_2000ml。表 B 有diff,val。当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 ;

【问题讨论】:

  • 您的触发器应该更新 B 中的 all 行。 . .这是你的意图吗?
  • 表 B 仅包含一行,将用于其他目的。

标签: mysql sql triggers phpmyadmin sql-update


【解决方案1】:

在你的 if 子句中使用“”,这个操作符像 = 操作符一样执行相等比较,所以你应该使用 或 !=:

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

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

【讨论】:

    猜你喜欢
    • 2015-12-28
    • 2011-03-23
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 2018-01-12
    • 1970-01-01
    • 2022-01-15
    • 2011-02-10
    相关资源
    最近更新 更多