将IDENTITY转换为数据类型tinyint的算术溢出错误

Ond*_*řej 6 sql t-sql sql-server auto-increment sql-server-2008-r2

我正在设计SQL Server 2008 R2 SP2 Express数据库中的表.我创建了包含nvarchar数据tinyint列的表和用于自动递增标识的列,假设行数不会超过几行(这就是我选择0-255的原因tinyint).当我添加超过255行时,即使在删除该表中的所有行并尝试添加一个新行之后,此错误仍会永久发生.我使用SQL Server Management Studio Express执行此操作.

  1. 如何强制数据库引擎检查哪些索引是免费的?
  2. 如果我改变会出现这种情况也tinyintint和达到的极限int是多少?

Hav*_*ame 10

一旦添加255行,然后想要从表中删除所有行,但增量列的计数器已经设置为255,即使在删除所有行之后也是如此.

要解决此问题,您需要在删除所有行后重置增量列的计数器.删除所有行时请使用以下查询,以便计数器将重置为重置为0.执行此查询后,可以在表中添加增量列值为1或在表设计时设置的行.

DELETE FROM [TestTable]

DBCC CHECKIDENT ('[TestTable]', RESEED, 0)
GO
Run Code Online (Sandbox Code Playgroud)

如果要从表中删除所有行,也可以使用truncate table命令.Truncate Command还将增量列重置为初始值.

Truncate Table [TestTable]
Run Code Online (Sandbox Code Playgroud)