【问题标题】:Trigger in mysql causing error在mysql中触发导致错误
【发布时间】:2020-02-13 13:55:49
【问题描述】:

以下代码中的错误是什么。我在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 不遗余力地确定问题的确切位置。

标签: mysql sql triggers


【解决方案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 看到第一个 ; 并调用语法错误时,它会认为你正在尝试结束触发器定义。

【讨论】:

  • 如果此答案解决了您的问题,请不要忘记接受并投票;)
猜你喜欢
  • 1970-01-01
  • 2012-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-28
  • 2011-04-01
相关资源
最近更新 更多