MySQL创建触发器(包括变量)语法
在MySQL创建触发器(包括变量)语法,mysql,triggers,Mysql,Triggers,在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
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 ;
我终于弄对了,我发现分隔符和语法可能有点混乱,因为我不总是使用MySQL: 我错过了一个
值()后面的代码>)
错误消息与您的代码不匹配。很抱歉,我在提交之前已重试,并对其进行了轻微更改。我已经纠正了一些,仍然有问题的结束。。。
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 ;