我的表中有 2 列:varchar(8)
and an int
.
我想要auto-increment
the int column
当我这样做时,我想将值复制到varchar(8) column
,但用 0 填充它直到它达到 8 个字符长,因此例如,如果int column
被增加到3
, the varchar(8)
列将包含'00000003'
.
我的两个问题是,当varchar(8)
列到达'99999999'
因为我不想有重复的?
我将如何在 MySQL 中执行此操作?
如果我的价值观可以介于00000000
to 99999999
,在用完之前我可以有多少个值?
这是我的替代方法,只创建一个随机的 8 个字符字符串并检查 MySQL 是否有重复项。我认为这是一种更好的方法,并且可以允许更多的值。
因为您的格式化列取决于 id 列,并且可以从 id 列派生,所以您的表设计违反了3NF http://en.wikipedia.org/wiki/Third_normal_form.
创建一个包含派生列的视图(请参阅sqlfiddle http://sqlfiddle.com/#!2/2bdcb/1):
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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)