mysql中递增列_向mysql表中添加一种自动递增列

匿名用户

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

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

另见我对https://stackoverflow.com/A/26899091/20860的回答

您不能使用虚拟列,可能也是出于同样的原因。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”字符串。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 |

+-------+-----------+

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值