【发布时间】:2011-10-19 20:23:28
【问题描述】:
在我的数据库应用程序中,我需要为每个客户提供一个唯一的 4 位数字字段。在 9999 之前,我只能使用自动增量,但在那之后,我将不得不重用已删除的客户数量(在给定时间不会超过 5000 个客户,但在整个生命周期内可能会有超过 9999 个客户系统)。
问题一:有没有(My)SQL语句来查找下一个可重用的空闲号?
问题2:如果我得到号码,将它分配给一个新客户并将客户全部保存在一次交易中,同时发生的类似交易将由数据库进行排序,因此号码不会发生冲突,对吧?
【问题讨论】:
-
这听起来像是一个非常脆弱的系统。为什么限制使用四位数的 ID?
-
(诚然我不知道具体情况,但我倾向于只使用 5 位数字 - 这样您就不必担心“当他说 3403 时,确实他是指拥有那个号码的当前客户,还是这个东西以某种方式从以前的客户身上挂了出来?”)
-
这是一个可怕的想法。滚动你自己的 ID 系统永远不会很好地工作。这就是增加了 4 位数字的限制,这对我来说也意味着您不会将其存储为数值,这也是一个可怕的想法
-
除了@JNK 所说的 - 重复使用旧客户号码听起来也是一个可怕的想法。如果老客户有投诉并提交了他们的旧(现在重复使用的)客户编号怎么办?
-
当我从客户那里听到这个要求时,我的第一反应也是“Ewww”;-) 但在我的情况下,系统不会有很多客户,并且删除的客户 ID 来自创建的客户错误地通过自动化流程。我被限制为 4 位数字,因为 5 位唯一数字用于其他用途(双 eww,我知道)。
标签: mysql sql auto-increment unique-key