我们知道表的id是整型且自增的,但我的问题是我想要一个由字符串和整数组成的唯一标识符。例如,字符串ABC是唯一标识符的起始码。
我的表的第一个id应该是主键,即ABC10001,ABC10002等等。
请不要使用另一个自增键来实现,并且不要使用两种类型的唯一键。
我的表的第一个id应该是主键,即ABC10001,ABC10002等等。
请不要使用另一个自增键来实现,并且不要使用两种类型的唯一键。
BEFORE INSERT
触发器来预先填充它,完全由您来避免任何自增处理的竞争条件。auto_increment只能用于整数或浮点数列。SELECT CONCAT('ABC1',LPAD(id,5,'0')) FROM tablename;
实现这个是一个不好的主意。你将不得不手动找到下一个值,然后你会受到竞争条件的影响。这可能会导致严重的数据完整性问题,如果你没有完全正确地解决这个问题,那么这些问题将无法修复。然而,如果你只想显示客户姓名和编号,这是可能的,但对于一个客户来说,编号将不会按顺序排列。(我以客户为例,实际上我不知道你的前缀代表什么),所以如果ABC001、DEF002、ABC003可以接受,那么就通过连接字符串获取你的自动化真实ID的编号。
SELECT LPAD( max( substr( id, 5 ) ) +1, 4, '0' ) FROM tablename
然后在您的下一个插入语句中使用此值。