选择结果的mysql concat

Idh*_*ian 5 mysql

我想在MySQL中插入数据,并在字段上自动命名,username但我怎么做呢?
目前的数据是:

+----+----------+
| id | username |
+----+----------+
|  1 | admin1   |
|  2 | admin2   |
+----+----------+

我尝试使用这个SQL但它不能:

INSERT INTO `tbl_user` (
`username`
)
VALUES (
CONCAT('admin',(SELECT MAX(SUBSTRING_INDEX(`username`,'admin',-1))+1 FROM `tbl_user`))
);

并得到错误消息#1093 - You can't specify target table 'tbl_user' for update in FROM clause

我想要的最终结果是:

+----+----------+
| id | username |
+----+----------+
|  1 | admin1   |
|  2 | admin2   |
|  6 | admin3   |
|  9 | admin4   |
+----+----------+

那可能吗?谢谢.

Ray*_*y Z 6

您可以使用在插入后更新列用户名的触发器.以下是有关如何实际执行此操作的更多信息:http://www.roseindia.net/sql/trigger/mysql-trigger-after-insert.shtml

编辑

我忘了MySQL不允许你从同一个表上声明的触发器更新表.

但是,这应该做你想做的事情:

SET @id := (SELECT id FROM YOUR_TABLE ORDER BY id DESC LIMIT 1);
INSERT INTO YOUR_TABLE (username) VALUES(
   CONCAT("ADMIN", @id + 1)
);
Run Code Online (Sandbox Code Playgroud)