在這種觸發:在觸發器使用局部變量
CREATE TRIGGER `after_insert_normas_revision`
AFTER INSERT ON `normas_revision` FOR EACH ROW
BEGIN
DECLARE VAR_P_RHID INT;
DECLARE VAR_P_VERSION INT;
SELECT MAX(a.`rhID`)
INTO VAR_P_RHID
FROM `revision_history` a
WHERE a.nID = new.`nID`;
IF VAR_P_RHID IS NULL THEN
SET VAR_P_VERSION = 0;
ELSE
SELECT `version`
INTO VAR_P_VERSION
FROM `revision_history` a
WHERE a.`rhID` = VAR_P_RHID;
END IF;
DECLARE VAR_NEW_VERSION INT;
SET VAR_NEW_VERSION = VAR_P_VERSION + 1;
INSERT INTO `revision_history`
(`revID`, `nID`, `userID`, `timestamp`,
`prev_rhID`, `version`, `action`, `comment`)
VALUES
(new.`revID`, new.`nID`, new.`userID`, CURRENT_TIMESTAMP, VAR_P_RHID, VAR_NEW_VERSION, 'UPDATE', new.`_rev_comment`);
END
我得到這個錯誤
架構創建失敗:您有一個錯誤的SQL語法;檢查 對應於您的MySQL服務器版本的手冊 的語法要在'DECLARE VAR_NEW_VERSION INT; SET VAR_NEW_VERSION = VAR_P_VERSION + 1; 「在第23行:
如果我刪除
DECLARE VAR_NEW_VERSION INT;
SET VAR_NEW_VERSION = VAR_P_VERSION + 1
或更改本地變量session變量(與前面加上@),那麼代碼好吧運行。
Q.爲什麼會發生這種情況?
非常感謝 – Tivie