重置标识列中的下一个ID

时间:2013-07-30 20:47:17

标签: c# sql

CourseID是自动递增的。如果我有标识为16,17和18的行并删除所有行,则19是生成的下一个ID。我想将其设置回16,删除最后一行。

5 个答案:

答案 0 :(得分:2)

删除记录时,身份种子不会被重置。查看本教程:http://www.howtogeek.com/howto/database/reset-identity-column-value-in-sql-server/

DBCC CHECKIDENT (your_table_name, RESEED, 0)

另请注意这种奇怪的行为DBCC CHECKIDENT Sets Identity to 0

答案 1 :(得分:1)

这不是IDENTITY字段的工作原理。您需要自己执行该逻辑或重置身份种子。

答案 2 :(得分:1)

这不是身份字段的工作方式,实际上,当您的解决方案处于活动状态时重置身份字段通常是个坏主意。

如果您的数据库中的其他任何表引用此表中的行(或审核等),通过重置CourseID,您可以在重新填充表时有效地将它们指向不同的课程。

如果您确实需要重置种子,可以使用以下命令执行此操作:

DBCC CHECKIDENT (Course_Table, RESEED, 0)

答案 3 :(得分:0)

如果这是SQL Server数据库并且您确实要清理表,则可以使用TRUNCATE TABLE。这不仅会删除所有行,还会重置IDENTITY值。

答案 4 :(得分:0)

如果您回滚事务或将它们删除,那么您希望它们不会被跳过。那就是设计允许多个交易。试图用手动过程改变这一点并将使您的数据完整性处于危险之中是一个非常糟糕的主意。他们跳过不坏事是件好事。