· 7 years ago · Sep 17, 2018, 02:20 PM
1Mysql trigger #1064 error
2CREATE TABLE IF NOT EXISTS `ORDER` (
3 `placeID` INT UNSIGNED NOT NULL,
4 `orderID` INT UNSIGNED NOT NULL,
5 `userID` INT UNSIGNED NOT NULL ,
6 `tableNum` SMALLINT NOT NULL,
7 `orderStatus` TINYINT NOT NULL,
8 `orderDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
9 PRIMARY KEY (`placeID`,`orderID`),
10 FOREIGN KEY (`userID`) REFERENCES `USER` (`userID`),
11 FOREIGN KEY (`placeID`) REFERENCES `PLACE` (`placeID`))
12ENGINE=InnoDB;
13
14delimiter $$
15DROP TRIGGER /*!50032 IF EXISTS */ `ORDER_TRIGGER` $$
16CREATE TRIGGER `ORDER_TRIGGER` BEFORE INSERT ON `ORDER`
17FOR EACH ROW
18BEGIN
19 DECLARE orderID INT UNSIGNED;
20 SELECT MAX(`orderID`) INTO orderID FROM `ORDER` WHERE `placeID` = NEW.placeID;
21 IF orderID IS NULL THEN
22 orderID = 1;
23 END IF;
24 SET NEW.orderID = orderID+1;
25END;
26$$
27delimiter;
28
29#1064 - 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 '= 1;
30 END IF;
31 SET NEW.orderID = orderID+1;
32END' at line 7
33
34delimiter $$
35DROP TRIGGER /*!50032 IF EXISTS */ `ORDER_TRIGGER` $$
36CREATE TRIGGER `ORDER_TRIGGER` BEFORE INSERT ON `ORDER`
37FOR EACH ROW
38BEGIN
39 DECLARE orderID INT UNSIGNED;
40 SELECT MAX(`ORDER`.`orderID`) AS ID INTO orderID FROM `ORDER` WHERE `ORDER`.`placeID` = NEW.placeID;
41 IF orderID IS NULL THEN
42 SET orderID = 0;
43 END IF;
44 SET NEW.orderID = orderID+1;
45END;
46$$