【问题标题】:Create trigger syntax error while inserting for trigger action插入触发器操作时创建触发器语法错误
【发布时间】:2017-12-26 11:19:45
【问题描述】:

我正在尝试创建一个触发器,以便如果特定表列中有任何更改,则应在另一个表列中创建事件。我正在为此使用以下 sql 查询

CREATE TRIGGER enabled_update BEFORE UPDATE ON useraccount 
FOR EACH ROW     
BEGIN
    IF (NEW.enabledAccount != OLD.enabledAccount) THEN
       INSERT INTO logEvents
       SET NEW.event = OLD.employeeID;
    END IF;
END;

但是当我尝试运行此查询时出现以下错误。 查询错误 (1064):第 6 行 '' 附近的语法错误查询错误 (1064):第 1 行 'END IF' 附近的语法错误。我哪里错了?

【问题讨论】:

  • 插入查询不完整,缺少一些子句和一个半列。

标签: mysql triggers


【解决方案1】:

使用DELIMITER 命令,参见23.1 Defining Stored Programs

DROP TRIGGER IF EXISTS `enabled_update`;

DELIMITER //

CREATE TRIGGER `enabled_update`
  BEFORE UPDATE ON `useraccount`
FOR EACH ROW     
BEGIN
    IF (NEW.`enabledAccount` != OLD.`enabledAccount`) THEN
       INSERT INTO `logEvents`
       SET `event` = OLD.`employeeID`;
    END IF;
END//

DELIMITER ;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多