自动使用数据库中的字符串组合自动增加表id

时间:2010-07-14 10:57:58

标签: mysql database

我们知道任何表的id都是整数类型,并且该表中的自动递增很好。但我的问题是我想增加字符串和整数的组合。例如 字符串:ABC是唯一ID的起始代码。

我的表的第一个ID应该是主键和

即ABC10001,ABC10002,.....等等。

不使用其他键作为自动增量。请不要使用两种类型的唯一密钥。

3 个答案:

答案 0 :(得分:8)

你不能在一个列中完成它,除非你指定一个预先填充它的BEFORE INSERT触发器,完全取决于你,以避免auto_increment自己处理的任何竞争条件。 auto_increment只能用于整数或浮点列。

在我看来,'要求'PK有一个特定的格式,'只是让它自动增加'是相互排斥的。

这并不意味着你不能在选择中“伪造”它:

SELECT CONCAT('ABC1',LPAD(id,5,'0')) FROM tablename;

答案 1 :(得分:0)

实现这一点是个坏主意。您将不得不计算出下一个值,然后您将受到竞争条件的影响。这可能会导致严重的数据完整性问题,如果您没有完全正确,则无法解决这些问题。但是,如果您只想显示带有客户端名称的号码,则可以使用,但客户端的号码不会按顺序排列。 (我使用客户端作为示例,我真的不知道你的前缀是什么意思),所以如果ABC001,DEF002,ABC003是可接受的,那么只需连接以从你的自动真实身份中获取数字。

答案 2 :(得分:-1)

除了Wrikken的回复,您可以从db:

中选择“next”值
SELECT LPAD( max( substr( id, 5 ) ) +1, 4, '0' ) FROM tablename

然后在下一个插入语句中使用此值。