如何在MySQL事件中设置用户定义的变量并从触发器访问以供以后使用?

时间:2014-05-27 13:39:34

标签: mysql triggers event-triggers

问题暗示我需要在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 ;  

因此,当我使用触发器时,我可以抵抗更新触发器&#34;更新之前&#34; as:

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变量。感谢名单

0 个答案:

没有答案