【问题标题】:Facing Error while creating a MYSQL trigger创建 MYSQL 触发器时遇到错误
【发布时间】:2016-02-11 07:48:59
【问题描述】:
DELIMITER $$
DROP TRIGGER IF EXISTS TRIGGER_BEFORE_USERS_MAUALEXPIRY_USEREXPIRAY_UPDATE $$


CREATE TRIGGER TRIGGER_BEFORE_USERS_MAUALEXPIRY_USEREXPIRAY_UPDATE 


    BEFORE UPDATE ON USERS
    FOR EACH ROW 
    BEGIN
    IF @DISABLE_TRIGGERS IS NULL THEN
        IF  NOT (NEW.MANUALEXPIRATIONDATE <=> OLD.MANUALEXPIRATIONDATE) THEN

            SET NEW.CUSTOMFIELD2 = NEW.MANUALEXPIRATIONDATE;
        IF  NOT(NEW.USEREXPIRYDATE <=> OLD.USEREXPIRYDATE)  THEN

            SET NEW.CUSTOMFIELD3 = NEW.USEREXPIRYDATE;
        END IF;
        END IF;         

    END$$

DELIMITER ;

错误代码:1064。您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在第 17 行的 '' 附近使用

【问题讨论】:

  • 缺少关闭第一个IF

标签: mysql triggers


【解决方案1】:
CREATE TRIGGER TRIGGER_BEFORE_USERS_MAUALEXPIRY_USEREXPIRAY_UPDATE     

    BEFORE UPDATE ON USERS
    FOR EACH ROW 
    BEGIN
    IF @DISABLE_TRIGGERS IS NULL THEN
        IF  NOT (NEW.MANUALEXPIRATIONDATE <=> OLD.MANUALEXPIRATIONDATE) THEN    
            SET NEW.CUSTOMFIELD2 = NEW.MANUALEXPIRATIONDATE;
        END IF;
        IF  NOT(NEW.USEREXPIRYDATE <=> OLD.USEREXPIRYDATE)  THEN    
            SET NEW.CUSTOMFIELD3 = NEW.USEREXPIRYDATE;
        END IF;    
    END IF;
END
$$

【讨论】:

  • 谢谢 jurgen,但我想比较这两种情况。如果我使用 elseif,我会放弃一个。
  • 谢谢 jurgens 我得到了答案,这个问题有一个类似的线程。 stackoverflow.com/questions/14847702/…
猜你喜欢
  • 2013-07-16
  • 2014-01-24
  • 1970-01-01
  • 1970-01-01
  • 2017-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多