0

質問が示すように、MySQL イベントで @var = 1 変数を次のように宣言する必要があります。

DELIMITER $
SET @check_before_update = 1 $
DROP EVENT IF EXISTS expire_product_from_shop $

CREATE 
EVENT IF NOT EXISTS expire_product_from_shop
ON SCHEDULE EVERY 2 MINUTE STARTS  now()
DO BEGIN 

    SET @check_before_update = 0;

    UPDATE Xdb.shop_product_m2m as m2m
    SET m2m.expired=1 WHERE m2m.expires <= now();   

    SET @check_before_update = 1;           


END $

DELIMITER ;  

そのため、トリガーを使用すると、次のように「更新前」の更新トリガーに抵抗できます。

DROP TRIGGER IF EXISTS shop_product_m2m_before_update $
CREATE TRIGGER shop_product_m2m_before_update 
BEFORE UPDATE ON shop_product_m2m
FOR EACH ROW
BEGIN
IF @check_before_update != 0 THEN

   SET NEW.modified = NOW();    
   SET NEW.expired = 0;
   SET NEW.expires =ADDDATE(NEW.modified, INTERVAL 15 DAY);


END IF ;


END$

イベントから設定され、イベントが原因でトリガーが起動されたときに検出されるセッション変数が必要です。質問でわかるように、イベントを実行しようとしています。解雇されます !私の他の意図が侵害されているためです。それを防ぐには、@check_before_update variableが必要です。ありがとう

4

0 に答える 0