【问题标题】:MySQL Create Trigger (incl Variables) SyntaxMySQL 创建触发器(包括变量)语法
【发布时间】:2017-12-18 10:08:06
【问题描述】:

END 触发器语法有点问题,得到:

#1064 - 您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解在第 30 行的“END”附近使用的正确语法

...知道失败的原因吗?

DELIMITER //
DROP TRIGGER IF EXISTS trg_tblOptymaster_AFTER_UPDATE //

CREATE TRIGGER trg_tblOptymaster_AFTER_UPDATE AFTER UPDATE ON tblOptyMaster 
FOR EACH ROW BEGIN
 DECLARE DateFrom DATE;
 DECLARE DateTo DATE;

 SET @DateFrom=DATE_ADD(OLD.DueDate, INTERVAL 6 MONTH);
 SET @DateTo=DATE_ADD(NEW.DueDate, INTERVAL 6 MONTH);

 INSERT INTO tblOptyDueDateMovement 
    (
    OpportunityCRMID, 
    SnapshotDate, 
    DueDateFrom, 
    DueDateTo,
    DueDateSlippage_Days,
    DueDateSlippage_Months,
    DueDateSlippage_FYs
    ) 
    VALUES 
    (
    NEW.OpportunityCRMID, 
    NEW.SnapshotDate,
    OLD.DueDate,
    NEW.DueDate,
    TIMESTAMPDIFF(DAY,DueDateFrom, DueDateTo),
    TIMESTAMPDIFF(MONTH,DueDateFrom, DueDateTo),
    TIMESTAMPDIFF(YEAR,@DateFrom, @DateTo)
    )

END; //

DELIMITER ;

【问题讨论】:

  • 错误信息与您的代码不匹配。
  • 对不起,我在提交之前又试了一次,并稍作更改。我已经更正了一些,但 END 仍然存在问题...

标签: mysql triggers


【解决方案1】:

我终于做对了,我发现分隔符和语法可能有点混乱,因为我并不一直使用 MySQL:

在 VALUES() 之后我错过了 ;

DELIMITER //
DROP TRIGGER IF EXISTS trg_tblOptymaster_AFTER_UPDATE //

CREATE TRIGGER trg_tblOptymaster_AFTER_UPDATE AFTER UPDATE ON tblOptyMaster 
FOR EACH ROW BEGIN
 DECLARE DateFrom DATE;
 DECLARE DateTo DATE;

 SET @DateFrom=DATE_ADD(OLD.DueDate, INTERVAL 6 MONTH);
 SET @DateTo=DATE_ADD(NEW.DueDate, INTERVAL 6 MONTH);

 INSERT INTO tblOptyDueDateMovement 
    (
    OpportunityCRMID, 
    SnapshotDate, 
    DueDateFrom, 
    DueDateTo,
    DueDateSlippage_Days,
    DueDateSlippage_Months,
    DueDateSlippage_FYs
    ) 
    VALUES 
    (
    NEW.OpportunityCRMID, 
    NEW.SnapshotDate,
    OLD.DueDate,
    NEW.DueDate,
    TIMESTAMPDIFF(DAY,DueDateFrom, DueDateTo),
    TIMESTAMPDIFF(MONTH,DueDateFrom, DueDateTo),
    TIMESTAMPDIFF(YEAR,@DueDateFrom, @DueDateTo)
    );

END//
DELIMITER ;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多