我今天写了自己的触发器,但是当我在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
SETNumberOfCars
= + 1 在第5行的“客户”
我在IF声明中尝试了很多不同的东西。我做错了吗?我没有显示任何语法错误。为什么phpmyadmin给我这个错误?它与IF-ELSE语句中的可用性不同。
答案 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 ;