根据MySQL中的另一列创建计算列

Xai*_*oft 2 mysql sql formatting database-design auto-increment

我的表中有两列:a varchar(8)和a int.

我想auto-incrementint column,当我这样做,我想的值复制到varchar(8) column,但用0填充它,直到它是8个字符长,因此,例如,如果int column被递增到3,该varchar(8)列将包含'00000003'.

我的两个问题是,当varchar(8)列到达时会发生什么,'99999999'因为我不想重复?

我将如何在MySQL中执行此操作?

如果我的价值观之间可以0000000099999999,有多少值可我以前我跑出来了?

这是我的另一种方法,只需创建一个随机的8个字符串并检查MySQL是否重复.我认为这是一种更好的方法,可以提供更多的价值观.

Boh*_*ian 5

由于您的格式化列依赖于id列,并且可以从id列派生,因此您的表设计违反了3NF.

创建一个包含派生列的视图(在sqlfiddle查看):

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)