MySQL,插入后自动更新字段,基于id和前缀

时间:2017-06-03 08:11:54

标签: mysql phpmyadmin

我试图在MySQL中创建一个基于现有主键(自动递增)'id'字段的“自定义”唯一ID

delimiter //
CREATE TRIGGER update_id AFTER INSERT ON test 
BEGIN
    UPDATE test SET PN="PN-"+NEW.id;
END;
//
delimiter ;

我正在使用PhpMyAdmin而且我真的不知道它是否是一个UI问题(我在PhpMyAdmin中创建触发器时遇到了一些问题)或者我确实做错了。

我需要的是一个自定义PN字段,根据一些文本前缀“PN - ”

在表中插入新记录时自动更新
id    PN    other fields
-------------------------
...
...
...
1253  PN-1253
1254  PN-1254

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BEGIN
        UPDATE test SET PN="PN-"+NEW.id;
    END' at line 2

我在其他一些StackOverflow帖子中读到,插入后在同一张桌子上这是不可能的(更新)。

这有一个解决方案吗?感谢。

1 个答案:

答案 0 :(得分:1)

获取新值并在插入

之前添加它
   delimiter //
    CREATE TRIGGER update_id BEFORE INSERT ON test 
    BEGIN
        SET @pn:= ( SELECT AUTO_INCREMENT 
                        FROM INFORMATION_SCHEMA.TABLES
                        WHERE TABLE_NAME='test'
                          AND TABLE_SCHEMA=DATABASE() ); 
      SET new.PN= CONCAT('PN-',@pn);
    END;
    //
    delimiter ;

Here