提问者:小点点

MySQL触发代码问题


我在MariaDb服务器中有一个触发器,其代码如下:

    DELIMITER //
    CREATE TRIGGER `set_app_number` 
    BEFORE INSERT ON `table_name` FOR EACH ROW BEGIN
        DECLARE newAppNo INTEGER;
        SELECT Max(id)+1 INTO newAppNo FROM table_name;
        SET NEW.application_number = newAppNo; 
    END; //
    DELIMITER ;

我正在尝试在我拥有MySQL(5.7+版本)的生产服务器上创建相同的触发器。我会得到这样的错误:

误差静态分析:

分析中发现错误6处。

  • 语句开头意外。(在位置0的“创建触发器”附近)
  • 语句开头意外。(靠近位置15处的“set_app_number”)
  • 语句开头意外。(靠近位置39处的“插入之前”)
  • 语句开头意外。(第57位“table_name”附近)
  • 语句开头意外。(靠近位置74处的“FOR EACH ROW begin”)
  • 语句开头意外。(第95位“Declare newAppNo integer”附近)

SQL查询:

table_name上插入之前为每一行BEGIN DECLARE newAppNo INTEGER创建触发器set_app_number

MySQL Said:文档

在第1行“Create TRIGGERset_app_numberBEFORE INSERT ONtable_name”附近

我不知道这里到底有什么问题。提前道谢。

当尝试使用more->trigger->add trigger从phpMyAdmin添加触发器时,将生成完全相同的代码。我不确定为什么它不允许在从SQL执行它时执行相同的操作。:(


共1个答案

匿名用户

删除分隔符a将其作为查询运行

CREATE TRIGGER `set_app_number` 
    BEFORE INSERT ON 
        `table_name` 
    FOR EACH ROW 
    BEGIN
        DECLARE newAppNo INTEGER;
        SELECT Max(id)+1 INTO newAppNo FROM table_name;
        SET NEW.application_number = newAppNo; 
    END;