在 sql 数据库中创建唯一列 id 的首选方法

Posted

技术标签:

【中文标题】在 sql 数据库中创建唯一列 id 的首选方法【英文标题】:preferred way to make a unique column id in sql database 【发布时间】:2014-03-11 10:28:20 【问题描述】:

大家好,我只是想知道是否有在 sql 表中创建唯一 ID 的首选方法到目前为止,我已经尝试了 Auto-increment 的数字,这开始在未来的规划中造成问题,所以我想关于使用 php Rand(),然后将其转换为字符串,然后将其插入数据库,但是两个数字与数据库中的数据量相同的可能性更高。

我只是想知道是否有任何关于创建唯一 column_id 的首选方法的建议 我对所有建议持开放态度,只有几件事 ID 需要足够简单,以便在内连接和左外连接内的其他表中使用,并且还使用文件名以及下载部分和上传部分。

【问题讨论】:

已尝试自动增加数字,这开始在未来的规划中造成问题有什么问题? 顺序是另一种选择。 @StanislavL 我正在与之合作的一位合作伙伴创建了我们目前正在处理的相同类型的项目,他发现使用自动增量存在限制,以降低再次发生这种情况的可能性我们决定使用唯一的数字或数字和字母的组合或其他任何东西,如日期和时间。这主要是像用户同时上传东西然后sql试图给每个东西一样的问题,所以我们虽然使用唯一的ID来防止这种情况会更容易 @NavjotSingh 你所说的序列是什么意思,你能澄清它是 sql 类型还是 php 函数。任何文件将不胜感激 @user3387522 请看oracle.com/technetwork/products/rdb/0307-sequences-130053.pdf 【参考方案1】:

使用 GUID

string com_create_guid ( void )

【讨论】:

感谢它看起来很有趣我相信当我开始研究这个主题时有人向我提到它我发现了这个link 但我只是想知道 GUID 的结果是什么?知道任何显示 GUID 输出的示例 GUID 如下所示: 25892e17-80f6-415f-9c65-7395632f0223 它是由特殊算法构建的唯一标识符。生成的值取决于生成的时间、生成它的 PC 等等。 GUID 最棒的地方 - 它是独一无二的。总是。没有任何机会生成两个相等的 GUID。 more information 只是想知道您是否知道是否可以设置 GUID 的字符数或是否有静态数量。 GUID 中的字符数始终是静态的。 感谢您提供的信息我找不到您的信息对您有很大帮助【参考方案2】:
<?php
 echo uniqid();
?> 

Description

【讨论】:

由于 id 必须与它需要链接到的文件名相同并且对于 PDF 文档来说似乎有点长@ SagarPanchal 你可以从一开始就拆分这个结果,但这不是一个好主意 有没有办法限制字符长度,例如 Min_length 或 Max_Length 或任何类似的东西

以上是关于在 sql 数据库中创建唯一列 id 的首选方法的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL 2008 R2 的表中创建 AutoCounter 列?

在 SQL 中创建名称列

SQL Server 为一列创建多个非聚集索引与在一个索引中创建多个列

如何使用 PostgreSQL 在 DBeaver 中创建自动递增/SERIAL id 列?

在两个不同的表中创建具有相同列的视图 SQL

在sql中创建一个组