我的表中有两列:avarchar(8)和aint
我想auto-increment这个int column列,当我这样做时,我想把这个值复制到varchar(8) column中,但是用0填充它,直到它有8个字符长,例如,如果int column增加到3varchar(8)列将包含'00000003'
我的两个问题是,当varchar(8)列到达'99999999'时会发生什么,因为我不想有重复的?
在MySQL中我该怎么做?
如果我的值可以在0000000099999999之间,那么在用完之前可以有多少个值?
这是我创建一个随机8个字符字符串并检查MySQL是否有重复项的替代方法。我认为这是一个更好的方法,并将允许更多的价值观。

最佳答案

因为格式化列依赖于id列,并且可以从id列派生,所以表的设计违反了3NF
创建一个包含派生列的视图(请参见sqlfiddle):

CREATE VIEW myview AS
SELECT *, substring(cast(100000000 + id AS CHAR(9)), 2) AS formatted_id
FROM mytable

或者只需在10000000开始自动递增,则它将始终为8位数长:
ALTER TABLE mytable AUTO_INCREMENT = 10000000;

07-26 00:17
查看更多