2017-01-30 25 views
1

我在mysql數據庫中有兩個表A和B.表A有brnd_id,R_2000ml。表B具有diff,val。當更新R_2000ml時,我在寫一個觸發器來更新表B.我計算的NEW.R_2000mlOLD.R_2000ml的差異,將結果存儲在diff列,傳遞一個布爾值設爲1,表B中的val列得到更新用於更新當前表中更新值的另一個表的MySQL觸發器

下面是一個不工作作爲我的觸發器代碼!值不表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

你的觸發應該更新* *所有以'B'行。 。 。你的意圖是? –

+0

表B只包含一行,並將用於其他目的。 – WASEEM

回答

0

在你的if語句使用「< =>」,此運算符執行像=運算符的相等比較,所以你應該使用<>或=:

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

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

該解決方案適用於我。謝謝你,@Imanez。 – WASEEM

相關問題