我在创建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