在mysql中触发导致错误
Posted
技术标签:
【中文标题】在mysql中触发导致错误【英文标题】:Trigger in mysql causing error 【发布时间】:2017-03-29 21:24:53 【问题描述】:以下代码中的错误是什么。我在mysql中执行
CREATE TRIGGER tg_order_insert
BEFORE INSERT
ON `order` FOR EACH ROW
BEGIN
INSERT INTO `grocery`.`order_seqid` VALUE(NULL);
SET NEW.order_id = CONCAT('#GNC', LPAD(LAST_INSERT_ID(),3,'0'));
END;
Grocery 是数据库,order_seqid 和 order 是 2 个表。
order_seqid 是一个只有 1 个属性的表,如果类型为 int 并自动递增。
我试图在我们插入订单表的 id 上加上一个前缀。
我在 INSERT INTO.....
和 END;
行中遇到 2 个错误
【问题讨论】:
是的,错误。我也得到那些。重要的是您遇到的具体错误。 MySQL 不遗余力地确定问题的确切位置。 【参考方案1】:您是否在触发器定义之前声明了分隔符?类似的东西
DELIMITER //
CREATE TRIGGER tg_order_insert
BEFORE INSERT
ON `order` FOR EACH ROW
BEGIN
INSERT INTO `grocery`.`order_seqid` VALUE(NULL);
SET NEW.order_id = CONCAT('#GNC', LPAD(LAST_INSERT_ID(),3,'0'));
END
//
因为如果你不这样做,那么当 MySQL 看到第一个 ;
并调用语法错误时,它会认为你正在尝试结束触发器定义。
【讨论】:
如果此答案解决了您的问题,请不要忘记接受并投票;)以上是关于在mysql中触发导致错误的主要内容,如果未能解决你的问题,请参考以下文章