-3

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

4

5 回答 5

2

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

DBCC CHECKIDENT (your_table_name, RESEED, 0)

另请注意这种相当奇怪的行为DBCC CHECKIDENT 将身份设置为 0

于 2013-07-30T20:48:36.577 回答
1

这不是身份字段的工作方式,实际上,在您的解决方案生效时重置身份字段通常不是一个好主意。

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

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

DBCC CHECKIDENT (Course_Table, RESEED, 0)

于 2013-07-30T20:57:10.513 回答
1

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

于 2013-07-30T20:48:39.293 回答
0

如果你回滚事务或删除它们,你到底为什么不希望它们被跳过。这是为了允许多次交易而设计的。尝试通过手动过程更改这一点将是一个非常糟糕的主意,并且会使您的数据完整性面临风险。他们跳过不是一件坏事是一件好事。

于 2013-07-30T20:56:14.367 回答
0

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

于 2013-07-30T20:50:05.563 回答