问题标签 [uniqueidentifier]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1860 浏览

asp.net - 为什么 aspnet_users 使用 guid 作为 id 而不是递增 int?帮助扩展用户字段的奖励积分

为什么 aspnet_users 使用 guid 作为 id 而不是递增 int?

还有没有理由在其他表中使用它作为主键?感觉有点奇怪,因为我知道我过去使用过的大多数应用程序都只是使用普通的 int 系统。

我也即将开始使用这个 id 来匹配一个扩展的详细信息表以获取额外的用户首选项等。我也在考虑使用一个带有 guid 和一个 int 的链接表,但决定我不认为我实际上需要将用户 ID 作为公共 int。

虽然我想拥有 int (感觉更容易进行用户查找等 stackoverflow.com/users/12345/user-name ),因为我只需要用户名,我认为我不需要携带这个项目,并在我需要查找用户 int 时导致查找的额外复杂性。

感谢您提供任何帮助。

0 投票
4 回答
3423 浏览

cocoa - 核心数据:生成唯一 ID 号

我有一个看起来像这样的窗口: 用户界面

每次添加记录时,我都希望将修复 ID 设置为表中尚未使用的唯一编号。例如,如果有 ID 号 1、2、3,那么当我按 + 时,ID 字段应设置为“4”。另外,如果表中的一条记录被删除,使得ID号为:1,2,4,那么当我按+时,Record ID中的数字应该设置为3。

目前,我有一个自定义的 ManagedObject 类,我在其中声明:

为了将日期设置为今天的日期。

我将如何实施这个唯一的记录 ID?

谢谢!

0 投票
4 回答
4443 浏览

sql - 使用 uniqueidentifier 作为主键并使用参数化查询从客户端应用程序插入它

我创建了一个数据库,我使用 uniqueidentifier 作为主键。我正在尝试运行最终看起来像这样的参数化查询。(插入 someTable (uniqueID) Values('76c14693-5475-4224-ba94-7d30c919ac59') (uniqueID 是我的 PK)。当我在 SQL Server Management Studio 中运行它时,此插入语句执行没有问题,但是,当我尝试从我的代码中运行它。

错误:当 IDENTITY_INSERT 设置为 OFF 时,无法在表“someTable”中插入标识列的显式值。

我查了一下,有很多关于打开 IDENTITY_INSERT 的建议,但它们都使用存储过程。我需要能够使用参数化查询来做到这一点。或者我需要一种方法来获取数据库中新创建的 guid。这似乎是每个人在某个时候都需要的东西。有没有简单的解决方案?

PS。我需要该 ID,因为我需要使用该 ID 将记录添加到其他表。

编辑:

这是有问题的表的结构

0 投票
4 回答
1045 浏览

sql - 将主键作为身份字段是否很好

我已经阅读了很多关于我们是否应该将主键作为标识列的文章,但我仍然感到困惑。

使列具有标识的优点,因为它可以在连接中提供更好的性能并提供数据一致性。但是有一个与身份相关的主要缺点,即当 INSERT 语句失败时,IDENTITY 值仍然会增加 如果事务回滚,则新的 IDENTITY 列值不会回滚,因此我们最终会出现排序间隙。我可以使用 GUID(通过使用 NEWSEQUENTIALID),但它会降低性能。

0 投票
9 回答
8808 浏览

tsql - 有没有一种简单的方法可以从两个整数复合键创建一个唯一的整数键?

由于与问题不太相关的各种原因,我有一个表,其中包含由两个整数组成的复合键,我想从这两个数字中创建一个唯一键。我最初的想法是把它们连接起来,但是当我意识到 (51,1) 的复合键会产生与 (5,11) 相同的唯一键,即 511 时,我很快遇到了问题。

有没有人有聪明的方法从两个整数中生成一个整数,使得生成的整数对于一对起始整数是唯一的?

编辑:在面对大量数学之后,我意识到我应该包括的一个细节是相关键的大小。在原始对中,第一个密钥当前为 6 位,并且可能在系统生命周期内保持 7 位;第二个密钥尚未超过 20。鉴于这些限制,看起来问题不那么令人生畏了。

0 投票
6 回答
34962 浏览

sql - 是否可以在每次调用视图时保持相同的 SQL Server 视图中创建唯一 ID?

我有 10 个表,我将它们连接在一起以创建一个视图。我只是从每个表中选择 ID,但在视图中,每个 ID 可以显示不止一次,但是所有 ID 的组合将始终是唯一的。有没有办法在这个视图中创建另一个作为唯一 ID 的列?

我希望能够存储唯一 ID 并使用它来查询视图以获取所有其他 ID。

0 投票
30 回答
719294 浏览

php - 如何生成随机的、唯一的字母数字字符串?

如何使用数字和字母生成随机的唯一字符串以用于验证链接?就像您在网站上创建帐户时,它会向您发送一封带有链接的电子邮件,您必须单击该链接才能验证您的帐户

如何使用 PHP 生成其中之一?

0 投票
5 回答
14592 浏览

sql-server - 如何识别 SQL Server 2005 中的空白唯一标识符?

我正在uniqueidentifier进入一个看起来像这样的存储过程

00000000-0000-0000-0000-000000000000.

这似乎是一件简单的事情,但如何确定这是一个空白uniqueidentifier

如果我得到这样的值,DDB72E0C-FC43-4C34-A924-741445153021我想做 X

如果我得到这样的值,00000000-0000-0000-0000-000000000000我会做 Y

有没有比数零更优雅的方法?

提前致谢

0 投票
10 回答
1773 浏览

algorithm - 生成一个不完全全局唯一的标识符

我发现了许多关于生成 UID 的不同问题,但据我所知,我在这里的要求有些独特 (ha)。

总结一下:我需要生成一个非常短的 ID,它是“本地”唯一的,但不必是“全局”或“普遍”唯一的。这些限制不仅仅是基于美学或空间问题,而是因为它本质上被用作硬件标签,并且受硬件限制。以下是规格:

硬性要求

  • ID 必须只包含十进制数字(基础数据是 BCD);
  • ID 的最大长度为 12 个字符(数字)。
  • 必须离线生成- 数据库/网络连接并不总是可用!

软要求

  • 我们希望它从日历年和/或月份开始。由于这确实浪费了很多熵,我不介意在此方面妥协或完全废弃它(如有必要)。
  • 从特定机器生成的 ID 应该是连续的。
  • ID 不必机器排序 - 例如,机器 1 吐出 [123000, 124000, 125000] 和机器 2 吐出 [123500, 123600, 124100] 非常好。
  • 然而,从集体的角度看,越顺序化越好。一组像 [200912000001, 200912000002, 200912000003, ...] 这样的 ID 将是完美的,尽管这显然不能跨多台机器扩展。

使用场景:

  • 该方案范围内的 ID 将由 10 台,最多 100 台不同的机器生成。
  • 生成的 ID 总数不会超过几百万。
  • 并发性极低。单台机器不会比每 5 分钟左右更频繁地生成 ID。此外,很可能一次不超过 5 台机器会在同一小时甚至同一天生成 ID。我预计一天内在给定机器上生成的 ID 少于 100 个,而所有机器的 ID 少于 500 个。
  • 少数机器 (3-5) 很可能负责生成超过 80% 的 ID。

我知道可以使用少于 12 个十进制数字将时间戳编码到 100 毫秒甚至 10 毫秒的精度,这足以保证此应用程序的“足够唯一”ID。我之所以在这里问这个问题,是因为我真的很想尝试在其中合并人类可读的年/月,或者编码一些关于源机器的信息,或者两者兼而有之。

我希望有人可以帮助在这些软要求上做出妥协……或者解释为什么在其他要求的情况下它们都不可能。

(PS 我的“本机”语言是 C#,但如果有人有任何绝妙的想法,任何语言甚至伪代码的代码都可以。)

更新:

既然我有机会睡在上面,我想我实际上要做的是默认使用时间戳编码,并允许各个安装通过定义自己的 2 或3 位机器 ID。这样一来,想要弄乱 ID 并打包人类可读信息的客户可以自行找出确保唯一性的方法,我们不对滥用行为负责。如果机器恰好在进行所有在线安装,也许我们可以通过提供一个服务器实用程序来处理机器 ID 来提供帮助。

0 投票
6 回答
216 浏览

mysql - MySQL - 为每条记录提供唯一键,而不是主键

好的,这是一个很难解释的问题。

我正在创建一个具有 PAGES 的应用程序,目前我使用 PageID 作为 SEL 记录的键。

我现在遇到的问题是我希望用户能够编辑页面,但不会丢失前一页(出于历史记录、记录保存原因,例如更改日志或 wiki 页面历史记录)。

这让我觉得我需要 PAGE 表中的一个新字段作为 pageID,但不是每次添加行时自动递增的主键。

Google 文档有一个 DOCID:/Doc?docid=0Af_mFtumB56WZGM4d3Y3d2JfMTNjcDlkemRjeg

这样我就可以拥有多个具有相同文档 ID 的记录,并根据 dataAdded 字段显示历史更改日志。当用户想要查看该 DOCID 时,我只需拉出最近的一个。

想法?我感谢您的聪明想法为我指明了正确的方向!