sql - Microsoft SQL Server 2012 的新 Identity Jump 功能如何处理数据类型范围?

标签 sql sql-server sql-server-2012 auto-increment identity-column

我以为这是一个错误,但读完这篇文章后 http://www.codeproject.com/Tips/668042/SQL-Server-2012-Auto-Identity-Column-Value-Jump-Is ,我发现这是SQL Server 2012的新特性。

此功能会自动将新行的最后一个标识列值增加 1000(整数)(对于 bigints 为 10000)。

enter image description here

我仍在尝试文章中给出的解决方案,但如果这种跳转发生在客户端,我没有任何问题。因为我正在向客户端显示 ID 的哈希版本。这是他自己的要求,不是我的。

但是我想知道如果这些标识列的值超出数据类型(int 或 bigint)的范围怎么办?它如何处理列的范围和大小?

最佳答案

现有标识列将失败,并显示“服务器:消息 8115,级别 16,状态 1,第 2 行将 IDENTITY 转换为数据类型 int 时发生算术溢出错误。发生算术溢出。”请参阅http://www.sql-server-performance.com/2006/identity-integer-scope/供讨论。

没有理由怀疑 Identity Jump 会有不同的行为。我不希望它去寻找较早序列中未使用的身份。

关于sql - Microsoft SQL Server 2012 的新 Identity Jump 功能如何处理数据类型范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36814552/

相关文章:

PHP:选择 2 个表?

mysql - 我的 SQL 连接超过 5 个表

sql - API : How can I remotely check if two data sets are identical, 没有通过 API 发送所有数据?

SQL - 在 COUNT 中指定条件/在一个 SELECT 中多次从同一字段返回值

sql-server - JSON 列或传统列

sql - 如何将表的列更新为缩放值

MySQL 日期函数 - 你可以不用查询就检查它们的输出吗

mysql - SQL 存储过程

更新行的 SQL 查询

SQL Server 2012 32位还是64位计算机上的64位?