我试图在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帖子中读到,插入后在同一张桌子上这是不可能的(更新)。
这有一个解决方案吗?感谢。
答案 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 ;