我在“另一个”编程论坛上,我们讨论的是在插入发生之前从自动增量字段中获取下一个数字(有一种方法可以使用ADOX)。这是在MS-Access数据库btw。
无论如何,讨论转向了应该使用自动增量字段的区域,例如发票编号,采购订单编号,提单编号或其他任何需要唯一增量编号的字段。
我的想法是“为什么不”?其他人则认为发票编号(例如)应作为单独的表进行管理,并使用代码递增,而不是使用自动编号字段。
有人能给我一个很好的理由说明为什么会这样吗? 我已经使用自动数字字段多年来只是这种类型的东西,从来没有遇到过问题。
你的想法?
答案 0 :(得分:1)
我一直避免使用auto_increment编号。事实证明这是有充分理由的。但最初我的理由是因为这就是教授告诉我们的。
几年前Facebook有一个重大漏洞 - 仅仅因为他们使用AUTO_INCREMENT字段作为用户ID。如果我的身份证号码是10320,那么可能不会拿计算器来判断是否有人身份证号为10319等。当调试(或校对设计)有一个隐含的数据代码的键是很容易的。
隐含数据的密钥会降低数据损坏的可能性(类型和用户猜测)。
隐式密钥要求开发人员考虑他们的数据。我从未遇到使用未规范化的隐式键的表。
除了最后期限经常紧张之外 - 没有很好的理由让自动增加。
答案 1 :(得分:1)
通常我会使用ID自动编号字段,因此我不需要考虑如何生成。
像插入和删除这样的记录集操作会改变跳过数字块的序列。
当您管理CustomerID,Invoice Numbers等时,最好完全控制它们,而不是让它们受系统控制。
您可以使用规则创建一个为您生成所需数字的功能(例如,发票可以是包含发票日期的功能)。
使用自动编号,您无法管理此内容。
之后,没有关于做什么和不做什么的固定规则。 这只是你的实践和经验以及你想拥有的自由度。
再见: - )