我可以使用
吗?DBCC CHECKIDENT(<table_name>, RESEED, value)
命令将标识列当前值重置为SQL Server 2008中的原始值?
如果是,这是否是没有任何缺点的正确方法? 如果没有,是否有其他方法可以做到这一点?
答案 0 :(得分:10)
该值可以省略。 所以,如果你使用
DBCC CHECKIDENT (<table_name>, RESEED);
SQL Server根据已使用的数字将ident值设置为正确的下一个数字。 这是重新认识身份值的唯一方法。
答案 1 :(得分:8)
我可以使用DBCC CHECKIDENT命令将标识列当前值重置为SQL Server 2008中的原始值吗?
是
如果是,这是否是没有任何缺点的正确方法?
这是记录下来的方法。
可能存在的缺点:您最终可能会收到重复的IDENTITY
值 - SQL Server无法保证它不会返回尚未使用的值。
E.g。如果您的IDENTITY
当前为100,并且您将其重置为1,则可能迟早会产生一个已经在使用的值。
SQL Server中实现的IDENTITY
不检查现有值或任何内容 - 它只生成序列号。这取决于您 - 尤其是如果您对RESEED
执行IDENTITY
以确保值不重复。
答案 2 :(得分:-1)
当且仅当feild是主键并且引用任何其他表中的任何外键时,它有一个很大的缺点。重新播种有助于获取具有该字段索引的事务表中的记录。