我可以使用
DBCC CHECKIDENT(<table_name>, RESEED, value)
将标识列当前值重置为 SQL Server 2008 中的原始值的命令?
如果是,这是进行此操作的正确方法而没有任何缺点吗?如果没有,是否有另一种方法可以做到这一点?
我可以使用
DBCC CHECKIDENT(<table_name>, RESEED, value)
将标识列当前值重置为 SQL Server 2008 中的原始值的命令?
如果是,这是进行此操作的正确方法而没有任何缺点吗?如果没有,是否有另一种方法可以做到这一点?
该值可以省略。所以如果你使用
DBCC CHECKIDENT (<table_name>, RESEED);
SQL Server 将 ident 值设置为正确的下一个数字 - 根据已使用的数字。这是我知道的重新设定身份值的唯一方法。
我可以使用 DBCC CHECKIDENT 命令将标识列的当前值重置为 SQL Server 2008 中的原始值吗?
是的。
如果是,这是进行此操作的正确方法而没有任何缺点吗?
这是一种记录在案的方法。
可能的缺点:您最终可能会得到重复IDENTITY
的值 - SQL Server 不能保证它不会返回尚未使用的值。
例如,如果您的IDENTITY
当前值为 100,并且您将其重置为 1,那么迟早会产生一个已经在使用的值。
在IDENTITY
SQL Server 中实现的 不检查现有值或任何东西 - 它只是产生序列号。这取决于您 - 特别是如果您对此进行了RESEED
操作IDENTITY
以确保值不重复。
当且仅当字段是主键并且引用任何其他表中的任何外键时,它有一个很大的缺点。重新播种有助于获取具有字段索引的事务表中的记录。