我在創建MySQL(5.1)觸發器時遇到了問題,我真的沒有看到我在這裏做錯了什麼。下面的代碼:觸發器中的語法錯誤
DELIMITER //
CREATE TRIGGER CheckSoftware BEFORE INSERT ON Software
FOR EACH ROW BEGIN
-- Uppercase the first letter
SET NEW.name = CONCAT(UPPER(SUBSTRING(NEW.name, 1, 1)), SUBSTRING(NEW.name, 2));
-- If price isn't round
IF NEW.price != TRUNCATE(NEW.price) THEN
IF NEW.price - TRUNCATE(NEW.price) <= 0.49 THEN
-- Sets it to xx.49
SET NEW.price = TRUNCATE(NEW.price) + 0.49;
ELSIF (NEW.price - TRUNCATE(NEW.price)) <= 0.99 THEN
-- Sets it to xx.99
SET NEW.price = TRUNCATE(NEW.price) + 0.99;
END IF;
END IF;
END;
//
DELIMITER ;
什麼的MySQL拋出我的臉:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') THEN
IF NEW.price - TRUNCATE(NEW.price) <= 0.49 THEN
' at line 7
非常感謝看着它!
'TRUNCATE'在'MySQL'中絕對是一個有效的函數名稱,而不只是用於清空表? – 2011-04-22 16:45:38
是的,我在MySQL文檔中找到它,並對其進行測試。另外,第一次調用TRUNCATE()似乎不會造成任何麻煩。我嘗試用其他函數(如ROUND())替換第二個調用,並且仍然出現相同的錯誤。 – ksol 2011-04-22 16:47:48