【发布时间】:2018-02-27 13:32:19
【问题描述】:
我创建了一个新应用程序。对于这个项目,我构建了一个登录页面。在存储用户信息的表中,我正在寻找一列将保留用户 ID。对于系统中的每个用户,此 ID 应该是唯一的。在网上四处寻找时,我发现了一些建议,但每个建议都有不同的问题。
在我的项目中,我使用的是 ColdFusion 2016 和 Microsoft SQL 2008。最初我打算在 SQL 中使用NEWID() 为每个用户生成密钥,但是我不喜欢这个解决方案的一些地方.
-
首先,ID 太长了,我不希望我的用户在搜索时输入这么长的值。
-
其次,我读到这会影响查询的性能并减慢我的数据库。
然后我在考虑使用auto-increment id。在我看来,这个解决方案对于系统 ID 来说太简单了,将来可能会引起一些冲突。
例如,如果必须重新创建表,我不确定 ID 是否会保持不变。所以我想知道为系统创建唯一 ID 的最佳做法是什么?我应该使用 ColdFusion CreateUUID() 吗?在我看来,这又太长了。
如果有人知道最佳实践或有任何实现此目标的示例,请告诉我。
【问题讨论】:
-
您可以将自动增量 ID 与 34567 之类的种子或您需要的任何套件一起使用,这意味着初始 ID 不会从 1 开始,而是从种子号 34567 开始,即维护您的 ID在操作表时,SQL 提供了 ALLOW_IDENTITY_INSERT 等工具来保持数据完整性
-
@TSion.D.P 你能提供一个如何播种 id 的例子吗? Allow_identity_insert 我猜应该只在操作表格时使用?
-
您可以在给定种子编号和增量编号时使用种子 ID EX:
Create table Tablea (id int identity 2000,1)。如果你想在插入时关闭身份插入,试试这个set Identity_insert tablea off -
搜索不需要使用NEWID()生成的ID。您可以使用另一个键进行搜索。该密钥可以是身份密钥。
-
我使用 CreateUUID (ColdFusion) 或 UUID (MySQL)。然后我知道我的 ID 是独一无二的。意外从错误表中删除记录的可能性为零,更容易在 mysql 备份文件中查找等。唯一性很重要。
标签: sql sql-server-2008 coldfusion uniqueidentifier coldfusion-2016