首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在mysql表中添加一种自动增量列

问在mysql表中添加一种自动增量列
EN

Stack Overflow用户
提问于 2017-06-29 05:02:41
回答 1查看 2.3K关注 0票数 3

我想在mysql表中添加一列,其中的单元格将获得如下值:

代码语言:javascript
复制
 newColumn
 -----------
 log-00001
 log-00002
 log-00003
 ....

值log-0000x将由mysql自动创建。这类似于“自动递增”列,但带有“log-”前缀。这个是可能的吗?Thx

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-29 05:27:26

MySQL不会自动递增整数以外的任何值。您不能自动递增字符串。

不能使用触发器根据自动增量值填充字符串。原因是在"before“触发器执行时还没有生成自动增量值,并且在"after”触发器中更改列已经太晚了。

另请参阅我对https://stackoverflow.com/a/26899091/20860的回答

您不能使用虚拟列,原因可能与此相同。

代码语言:javascript
复制
mysql> create table t (id int(5) zerofill auto_increment primary key, 
    virtcolumn char(8) as (concat('log-', id)));
ERROR 3109 (HY000): Generated column 'virtcolumn' cannot refer to auto-increment column.

您必须让整数自动递增,然后在插入完成后使用UPDATE填充"log-nnnnnn“字符串。

代码语言:javascript
复制
CREATE TABLE `t` (
  `id` int(5) unsigned zerofill NOT NULL AUTO_INCREMENT,
  `log` char(9) DEFAULT NULL,
  PRIMARY KEY (`id`)
);

INSERT INTO `t` () VALUES ();

UPDATE `t` SET `log` = CONCAT('log-', `id`) WHERE `id` = LAST_INSERT_ID();

SELECT * FROM `t`;
+-------+-----------+
| id    | log       |
+-------+-----------+
| 00001 | log-00001 |
+-------+-----------+
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44812494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档