在mysql中触发导致错误

时间:2017-03-29 21:24:53

标签: mysql sql triggers

以下代码中的错误是什么。我在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和auto increment 我试图在我们插入订单表的id上加上一个前缀。 我在INSERT INTO.....END;

中收到2个错误

1 个答案:

答案 0 :(得分: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会认为你正试图结束你的触发器定义。