Xai*_*oft 2 mysql sql formatting database-design auto-increment
我的表中有两列:a varchar(8)和a int.
我想auto-increment了int column,当我这样做,我想的值复制到varchar(8) column,但用0填充它,直到它是8个字符长,因此,例如,如果int column被递增到3,该varchar(8)列将包含'00000003'.
我的两个问题是,当varchar(8)列到达时会发生什么,'99999999'因为我不想重复?
我将如何在MySQL中执行此操作?
如果我的价值观之间可以00000000来99999999,有多少值可我以前我跑出来了?
这是我的另一种方法,只需创建一个随机的8个字符串并检查MySQL是否重复.我认为这是一种更好的方法,可以提供更多的价值观.
由于您的格式化列依赖于id列,并且可以从id列派生,因此您的表设计违反了3NF.
CREATE VIEW myview AS
SELECT *, substring(cast(100000000 + id AS CHAR(9)), 2) AS formatted_id
FROM mytable
Run Code Online (Sandbox Code Playgroud)
或者只是开始你的自动增量10000000,然后它总是8位数:
ALTER TABLE mytable AUTO_INCREMENT = 10000000;
Run Code Online (Sandbox Code Playgroud)