我们知道任何表的id都是整数类型,并且该表中的自动递增很好。但我的问题是我想增加字符串和整数的组合。例如 字符串:ABC是唯一ID的起始代码。
我的表的第一个ID应该是主键和
即ABC10001,ABC10002,.....等等。
不使用其他键作为自动增量。请不要使用两种类型的唯一密钥。
答案 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
然后在下一个插入语句中使用此值。