2012-12-25 149 views
-1

我今天編寫了自己的觸發器,但是當我在mysql上輸入它時,它給了我語法錯誤。 以下是我在以下代碼中的觸發器定義;Mysql在if語句中觸發語法

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

你忘了幾;和1迭代中的SQL,你不能使用+=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 ;