Mysql触发if语句中的语法

时间:2012-12-25 19:16:59

标签: mysql database triggers

我今天写了自己的触发器,但是当我在mysql上输入它时,它会给我语法错误。 这是我在以下代码中的触发器定义;

CREATE DEFINER = CURRENT_USER TRIGGER `Customer_Car_Trigger` AFTER INSERT ON `CUSTOMERS`
FOR EACH ROW
BEGIN
SET @CountOfCar = (SELECT COUNT(ID) FROM `CARS`,`CUSTOMERS` WHERE `CARS`.`CustomerID` = `CUSTOMERS`.`ID`)
IF @CountOfCar>0 THEN
    UPDATE `CUSTOMERS` SET `NumberOfCars`=+1 WHERE `CUSTOMERS`.`ID`=NEW.`ID`
END IF
END;

当我将此代码放入phpmyadmin时,它给了我:

  

#1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在'IF @ CountOfCar>附近使用正确的语法0然后更新CUSTOMERS SET NumberOfCars = + 1   在第5行的“客户”

我在IF声明中尝试了很多不同的东西。我做错了吗?我没有显示任何语法错误。为什么phpmyadmin给我这个错误?它与IF-ELSE语句中的可用性不同。

1 个答案:

答案 0 :(得分:1)

您忘记了一些;并在SQL中迭代1,您无法使用+=1

delimiter |
CREATE DEFINER = CURRENT_USER TRIGGER `Customer_Car_Trigger` AFTER INSERT ON `CUSTOMERS`
FOR EACH ROW
BEGIN
   SET @CountOfCar = (SELECT COUNT(ID) FROM `CARS`,`CUSTOMERS` WHERE `CARS`.`CustomerID` = `CUSTOMERS`.`ID`);
   IF @CountOfCar>0 THEN
      UPDATE `CUSTOMERS` SET `NumberOfCars`= `NumberOfCars`+1 WHERE `CUSTOMERS`.`ID`=NEW.`ID`;
   END IF;
END;
|
delimiter ;