我想知道除了AUTO_INCREMENT之外,自动设置表的最简单方法是什么。
我有一张桌子,会在很长一段时间内积累数千行。其中一些行将在以后删除。如何获取新行以获得最低可用ID,而无需手动执行。
我是否可以在每次有人添加行时重置AUTO_INCREMENT?
答案 0 :(得分:4)
坦率地说,这不值得麻烦。我相信它可能,但它只是一天中唯一的标识符 - 无论是1还是1000都无关紧要。
如果是出于其他目的,请考虑使用其他字段。
IMO你不应该搞砸索引。
答案 1 :(得分:2)
不可能,ID是唯一的,可以使用一次..
只有在你清空你的桌子时才有可能。
答案 2 :(得分:1)
谁在乎? integer可以有数十亿个唯一值,所有这些值都占用相同的内存量(每个4个字节)。使用主键进行赌博就像俄罗斯轮盘赌到您的数据库:最终您的数据库将会死亡(它会被破坏)。
答案 3 :(得分:0)
我猜你可以使用触发器,但这可能会在一段时间后变成一个巨大的混乱。不明白为什么你不想使用auto_increment,你有什么特别的理由吗?
@Jordy:你的陈述并非都是真的,是的,在任何给定的点上只有一行可以有一个值,但是如果删除一行,你仍然可以将删除的值重用于另一行。您也可以将计数器重置为您想要包含增量的任何值,而不删除表格。
答案 4 :(得分:0)
可以将自动增量重置为下一个可能的ID:
ALTER TABLE table_name AUTO_INCREMENT = 1
您甚至不必将其设置为下一个可用密钥。 MySQL将在下次更新时自动获取下一个密钥。因此,每次将其设置为“1”都是安全的。
但如果您不关心ID,为什么甚至使用ID?甚至大量的ID都不是问题。我有一个包含超过2000万个条目的表,从来没有ID的问题。