使用标识列来确定行创建的顺序是一个不好的做法吗?

发布于 2024-11-14 09:37:38 字数 315 浏览 0 评论 0原文

可能的重复:
我可以吗使用 SQL Server 标识列来确定行的插入顺序?

如果标识列被重新播种,那么它不能用于确定行插入的顺序,但我没有理由重新播种身份。

我是否有任何理由不应该使用标识列来确定创建顺序?

Possible Duplicate:
Can I use a SQL Server identity column to determine the inserted order of rows?

If an identity column is reseeded, then it can not be used be used to determine the order of row insertion, but I have no reason to ever reseed the identity.

Are there any reasons why I should not use the identity column to determine the order of creation?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

灼疼热情 2024-11-21 09:37:38

因为它不可靠是我不会使用它的原因。您可能有两个进程同时请求身份值,进程 1 获取第一个值,进程 2 获取第二个值,但进程 2 实际上较早完成了事务,因此较早插入。如果您想了解记录实际插入的顺序,则插入日期的日期时间字段是唯一可靠的选择。

Because it wouldn't be reliable would be the reason I would not use it. You might have two processes ask simultaneously for identity values and process 1 got the first value and process 2 got the second value but process 2 actually finished the transaction earlier and thus was inserted earlier. A datetime field for date inserted is the only reliable choice if you want to know the order that records were actually inserted.

余生一个溪 2024-11-21 09:37:38

这不被认为是一个好的做法。例如,在某些服务器中,在同时事务中对表进行插入的两个进程可能会分配有大块 id,因此从一个事务插入的任何行的 id 都小于从另一事务插入的任何行的 id。此外,这有时会导致 id 序列出现间隙。并且还可能发生其他意想不到的情况。

简而言之,自动增量 id并不总是保证是连续且升序的序列。

It is not considered a good practice. For example, two processes doing inserts on a table in simultaneous transactions can in some servers have chunks of ids assigned to them, so any row inserted from one transaction will have a lesser id than any row inserted from the other transaction. Also, this can sometimes cause gaps in sequence of ids. And there may be also other scenarios something unexpected might happen.

In short, autoincremented ids are not always guaranteed to a be a continuous and ascending sequence.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文