Mysql 触发器 #1064 错误

标签 mysql triggers innodb

我正在尝试编写一个触发器来解决 innodb auto_increment 问题。我想让 orderID 为 auto_increment 但是 innodb 不允许我。这是订单表

CREATE TABLE IF NOT EXISTS `ORDER` (
  `placeID` INT UNSIGNED NOT NULL,
  `orderID` INT UNSIGNED NOT NULL,
  `userID` INT UNSIGNED NOT NULL ,
  `tableNum` SMALLINT NOT NULL,
  `orderStatus` TINYINT NOT NULL,
  `orderDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`placeID`,`orderID`),
  FOREIGN KEY (`userID`) REFERENCES `USER` (`userID`),
  FOREIGN KEY (`placeID`) REFERENCES `PLACE` (`placeID`))
ENGINE=InnoDB;

这是触发器

delimiter $$
DROP TRIGGER /*!50032 IF EXISTS */ `ORDER_TRIGGER` $$
CREATE TRIGGER `ORDER_TRIGGER` BEFORE INSERT ON `ORDER`
FOR EACH ROW
BEGIN
        DECLARE orderID INT UNSIGNED;
    SELECT MAX(`orderID`) INTO orderID FROM `ORDER` WHERE `placeID` = NEW.placeID;
        IF orderID IS NULL THEN
            orderID = 1;
        END IF;
    SET NEW.orderID = orderID+1;
END;
$$
delimiter;

当我执行此脚本时,出现此错误。

#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;
        END IF;
    SET NEW.orderID = orderID+1;
END' at line 7 

有人可以帮我吗?我查了一下谷歌,但找不到准确的解决方案。

最佳答案

我发现了我的错误。这是正确的代码。

delimiter $$
DROP TRIGGER /*!50032 IF EXISTS */ `ORDER_TRIGGER` $$
CREATE TRIGGER `ORDER_TRIGGER` BEFORE INSERT ON `ORDER`
FOR EACH ROW
BEGIN
        DECLARE orderID INT UNSIGNED;
        SELECT MAX(`ORDER`.`orderID`) AS ID INTO orderID FROM `ORDER` WHERE `ORDER`.`placeID` = NEW.placeID;
        IF orderID IS NULL THEN
            SET orderID = 0;
        END IF;
    SET NEW.orderID = orderID+1;
END;
$$

关于Mysql 触发器 #1064 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11316512/

相关文章:

mysql - 为什么两个并发的 delete + insert 语句会在一个空表上死锁?

mysql - 将 MyISAM 键插入 INNODB 表

mysql - 客户端间数据同步

php - 如何在 laravel 4 中从多对多关系中检索数据?

MYSQL查询不同表相同ID

mysql - 使用 MySQL 创建触发器,并在列名中包含连字符/破折号

javascript - 如何组合不同的事件触发器

postgresql - 错误 : unterminated quoted string at or near

mysql innodb 每个表一个文件,每个文件位于不同的目录中?

python - 更新查询在 python 中抛出异常