标识列是否从指定的种子开始

时间:2019-01-30 05:05:41

标签: sql sql-server database ssms

请参阅下面的图像(来自SQL Server Management Studio),我已经有一个包含记录的表,最后一条记录有一个id of 7。我希望将此列自动递增作为主键(就像在进行一些未知填充之前所做的那样),显然下一个记录具有id of 8

enter image description here

将种子指定为7意味着下一个记录的ID将为7吗?还是(7 +增量值)等于8?

3 个答案:

答案 0 :(得分:3)

SQL Server非常智能,您从1到8给出的任何值都只会从8开始。

例如,如果将Identity Seed设置为1,并在表中插入一条记录,SQL将仅将新的Identity计算为8。

如果仅在这种情况下指定> 8,它将考虑种子值。

注意:当您使用SSMS实现此目的时,将在内部删除表,并使用正确的身份创建新表。

如果要使用sql查询来执行此操作,则必须遵循此answer

中提到的说明

答案 1 :(得分:1)

假设您的桌子很大,那么您必须查询以找到最大ID

只需这样做

DBCC CHECKIDENT ('TableName', RESEED, 1) 

答案 2 :(得分:-1)

我认为SQL Server将迫使您使用新的标识重新创建表,并且您将不得不将数据移到该表中,该表将从1开始并以1递增。