mysql - mysql中的触发器导致错误

标签 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 且自动递增)的表。
我试图在我们插入订单表的 id 上添加前缀。 我在 INSERT INTO.....END;

中收到 2 个错误

最佳答案

您是否在触发器定义之前声明了分隔符?类似的东西

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 - mysql中的触发器导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58419165/

相关文章:

mysql - 使用 SELECT/JOIN 触发插入

php - 如何选择数据库中的所有表

mysql 如果更新后全部为空则删除行而不触发

sql - Firebird存储过程内的"select..into"

mysql - 如何根据多列更新数据库中的一组重复行

php - SQL 查询不适用于 PHP 但适用于 SQL

mysql - 将聚合与行数据进行比较

php - 使用php将sql postgres查询导出到excel

sql - 如何使用ssisdb在运行过程中获取ssis包执行信息

sql - 如何在 SQL 中同时发送更新批处理和语句