当前位置: 首页 > 面试题库 >

SQL Server中自动增量主键的上限

巫马阳飙
2023-03-14
问题内容

SQL Server中自动增量主键的上限是多少?SQL Server自动增量主键达到上限时会发生什么?


问题答案:

Joel的答案是正确的,它是您使用的任何数据类型的上限。

这是其中两个的示例:

  • 整数:2 ^ 31-1(2,147,483,647)
  • bigint:2 ^ 63-1(9,223,372,036,854,775,807)

实际上,我所从事的工作已经达到极限。实际错误是:

    消息8115,第16级,状态1,第1行
    将IDENTITY转换为int数据类型的算术溢出错误。
    发生算术溢出。

我可以想到一些解决方法,可以解决这些问题。1号可能很困难,不太可能,2号很容易,但是可能会在您的代码库中引起问题。

  1. 如果身份列对您来说无关紧要(它不是外键等),那么您可以重新设置数据库的种子并重置身份列。
  2. 将您的身份列更改为更大的数字。因此,例如,如果您溢出了一个int,请将您的identity列更改为一个大int。祝你好运溢出:)

可能还有其他修复程序,但没有一个简单的魔术子弹。我只是希望这不会在一系列关系的中心表中发生,因为如果发生这种情况,那么您会很痛苦。这不是一个硬性解决方案,只是一个乏味而漫长的解决方案



 类似资料:
  • 问题内容: 我有这样的代码 即使我非常确定我是第一次写记录,此代码也会给我一个 sqlite3.IntegrityError 异常。 所以,我尝试 这会将行细插入 基 表BUT中,ID列根本不会自动递增。 我能做什么?任何想法? 问题答案: 在sqlite中,仅当一个整数列是主键时,您才获得自动增量行为。复合键阻止自动增量生效。 通过定义为唯一的主键,然后在上添加一个附加的唯一约束,您可以获得类似

  • 问题内容: 是否可以自动增加非主密钥? 表“ book_comments” 该表上将没有其他索引。但是,我想使列自动递增,以便可以轻松创建另一个表: 表格“ book_comments_votes” 用户将只能对每个书评进行一次投票。该表通过主键强制执行此规则。 题: 是否可以自动增加非主键-例如,自动增加表“ book_comments”中的列? 替代方案,讨论: 如上所述,我想这样做是为了简化

  • 问题内容: 我想在ala SQL Server列中实现标识或自动递增值: 如何才能做到这一点? 问题答案: 正如Orbman所说,实现此目标的标准方法是使用序列。大多数人也将其与插入触发器结合在一起。因此,当插入没有ID的行时,触发器将触发以从序列中为您填写ID。 这是在Oracle中使用触发器的少数情况之一。

  • 问题内容: 我有多个结构相同的数据库,有时会在其中复制数据。为了保持数据完整性,我使用两列作为主键。一个是数据库ID,它链接到包含有关每个数据库的信息的表。另一个是表键。它不是唯一的,因为它可能有多个行,且此值相同,但database_id列中的值不同。 我打算将这两列变成一个联合主键。但是,我也想将表键设置为自动递增-但基于database_id列。 EG,使用以下数据: 如果我要添加包含dab

  • 我将向一个SQL Server表中添加一行,该表的主键列是自动递增的(< code>identity)。当我以编程方式向表中插入一个新行时,有没有办法获得所添加行的键值,因为我想在另一个相关表中将它用作外键?

  • 问题内容: 我正在尝试更改没有主键或auto_increment列的表。我知道如何添加主键列,但我想知道是否有可能自动将数据插入主键列(我已经在数据库中有500行,并希望为其提供ID,但我不想手动执行) 。有什么想法吗?非常感谢。 问题答案: 在我的测试中,添加列的语句可以正常工作: 在为测试目的而创建的临时表上,以上语句创建了该 列,并为该表中的每个现有行插入了自动递增值,从1开始。