SQL Server 和 Identity 列中的间隙

发布于 2024-08-27 03:01:16 字数 173 浏览 4 评论 0原文

我刚刚注意到,如果表中有一个标识列,当我插入新行时,如果存在不连续性,SQL Server 2008 会自动填充序列。我的意思是,如果在我的身份列中我有 1,2,5,6,如果我在表中插入其他两行,系统会自动将 3,7 放入身份列中。

你知道如何控制这种行为吗?

谢谢

I just noticed that if I have an identity column in a table, when I insert new rows SQL Server 2008 is automatically filling up the sequence if there are discontinuity. I mean, if in my identity column I have 1,2,5,6 if I insert other two rows in the table the system puts automatically 3,7 in the identity column.

Do you know how to control this behavior?

THANKS

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

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

发布评论

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

评论(1

作死小能手 2024-09-03 03:01:16

这是已定义和记录的 SQL Server 行为,您实际上无能为力对其进行更改。你想改变什么?

IDENTITY 列将保证唯一的、不断增加的 ID(只要您不乱用它们)——它们不保证其他任何内容。

SQL Server不会费力去发现序列中的“间隙”并填补它们。无论如何,我认为这不是一个好主意 - 如果您确实有 ID=3 的记录,然后将其删除怎么办?你真的想要下一条记录突然“回收”那个ID吗?我认为这不是一个好主意。

That is the defined and documented SQL Server behavior, and there's really not much you can do about changing it. What did you want to change about it??

IDENTITY columns will guarantee unique, ever-increasing ID's (as long as you don't mess around with them) - they don't guarantee anything else.

SQL Server will not go through the trouble of spotting "gaps" in your sequence and filling them up. I don't think that would be a good idea, anyway - what if you did have a record with ID=3, and then deleted it? Do you really want a next record to suddenly "recycle" that ID?? Not a good idea, in my opinion.

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