当表中的记录被全部删除,但此时标识列的值越来越大的时候,如果不加以重置,它还会无休止的增长。
可以用如下语句重置标识列
DBCC CHECKIDENT('table_name', {RESEED|NORESEED}[,new_reseed_value ])
参数
'table_name'
是要对其当前标识值进行检查的表名。表名必须符合标识符规则。有关更多信息,请参见使用标识符。指定的表必须包含标识列。
NORESEED
指定不应更正当前标识值。
RESEED
指定应该更正当前标识值。
new_reseed_value
是在标识列中重新赋值时要使用的值。
注释
如有必要,DBCC CHECKIDENT 会更正列的当前标识值。然而,如果标识列是使用 NOT FOR REPLICATION 子句(在 CREATE TABLE 或 ALTER TABLE 语句中)创建的,则不更正当前标识值。
如果标识列上有主键或唯一键约束,无效标识信息可能会导致错误信息 2627。
对当前标识值所做的具体更正取决于参数规范。
DBCC CHECKIDENT ('table_name', NORESEED) 不重置当前标识值。DBCC CHECKIDENT 返回一个报表,它指明当前标识值和应有的标识值。
DBCC CHECKIDENT ('table_name') 或
DBCC CHECKIDENT ('table_name', RESEED) 如果表的当前标识值小于列中存储的最大标识值,则使用标识列中的最大值对其进行重置。
DBCC CHECKIDENT ('table_name', RESEED, new_reseed_value) 当前值设置为 new_reseed_value。如果自创建表后没有将行插入该表,则在执行 DBCC CHECKIDENT 后插入的第一行将使用 new_reseed_value 作为标识。否则,下一个插入的行将使用 new_reseed_value + 1。如果 new_reseed_value 的值小于标识列中的最大值,以后引用该表时将产生 2627 号错误信息。
当前标识值可以大于表中的最大值。在此情况下,DBCC CHECKIDENT 并不自动重置当前标识值。若要在当前标识值大于列中的最大值时对当前标识值进行重置,请使用两种方法中的任意一种:
执行 DBCC CHECKIDENT ('table_name', NORESEED) 以确定列中的当前最大值,然后使用
DBCC CHECKIDENT ('table_name', RESEED, new_reseed_value) 语句将该值指定为 new_reseed_value。
将 new_reseed_value 置为很小值来执行 DBCC CHECKIDENT ('table_name', RESEED, new_reseed_value),然后运行 DBCC CHECKIDENT ('table_name', RESEED)。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/vince6799/archive/2009/05/21/4206861.aspx
分享到:
相关推荐
* 如果表的当前标识值小于标识列中存储的最大标识值,则使用标识列中的最大值对其进行重置。 * 如果该表不为空,那么将标识值设置为小于标识列中的最大值的数字时,将会出现错误消息 2627,原因是生成的标识值将与...
- 重置标识列后,如果再次插入数据,系统将自动分配一个新的标识值,这个值可能是之前存在的值,这可能会导致数据混乱或丢失。 - 使用`DBCC CHECKIDENT`命令时,应确保理解其对数据的影响,并在安全的环境中测试后再...
2、 identity 是标识列不是序号列,如果想给表指定一个连续不断的序号列的时候,请慎重选择 identity,因为 identity 是唯一标识列,在删除数据的时候会造成序号不连续,需要你重置种子数才能避免数据序号的不连续性...
然而,在某些情况下,可能需要手动修改标识列的行为,例如更改其起始值、重置序列或者调整其属性等。下面将详细介绍几种常见的SQL修改标识列的方法。 #### 1. 允许对系统表进行更新 在Microsoft SQL Server中,...
这将重置标识列的种子值为“新的起始值”,使得下一次自动插入的值从这个新的值开始。 总之,`SET IDENTITY_INSERT`是SQL Server中一个有用的工具,允许在特定情况下对标识列进行手动操作。但应谨慎使用,确保遵循...
如果需要重置标识列的种子值,可以使用`DBCC CHECKIDENT`命令: ```sql DBCC CHECKIDENT ('Students', RESEED, 0); ``` 这将把`Students`表的`ID`列的下一个值重置为1。注意,如果表中已有数据,应确保不覆盖...
由于之前处理过sql server数据库的迁移工作,尝试过其自增列值的变更,但是通过SQL 语句修改自增列值,是严格不允许的,直接报错(无法更新标识列 ‘自增列名称‘)。sql server我测试是2008、2012和2014,都不允许...
3dmax随机旋转、重置旋转插件下载
layui laypage插件如何通过ajax返回动态count值,然后重置laypage count值
然后,我们使用一个PL/SQL块来遍历所有需要重置的Sequence,并根据表中的最大主键值来设置Sequence的起始值。 #### 1. 定义函数`func_getseq` ```sql CREATE OR REPLACE FUNCTION func_getseq (in_table VARCHAR2)...
jq重置select下拉列表 在网页开发中,select下拉列表是一种常用的表单控件,用于让用户从多个选项中选择一个或多个选项。然而,在某些情况下,我们需要重置select下拉列表,以便在不同的场景下显示不同的选项或清空...
- 如果需要重新开始计数,可以使用`DBCC CHECKIDENT`命令重置`IDENTITY`列的当前值。 总之,在VS2005环境下,正确理解和运用“自动编号主键列”这一特性,对于高效、安全地管理数据库具有重要意义。它不仅简化了...
本文详细介绍了兄弟HL-4150_4170提示更换硒鼓,转印带重置清零方法
使用mssql代码查询某个数据库中所有索引的情况,包括碎片信息
为了解决这一问题,我们可以采用两种主要方法来重置自增列的初始值。 1. **使用`ALTER TABLE`和`DELETE`命令** 这种方法适用于数据量较小的情况。首先,你需要删除表中的所有数据,然后设置自增列的初始值。具体...
然而,当对包含Identity列的表执行此操作时,它不仅会清空数据,还会重置Identity列的种子值和增量值。这意味着下一次插入时,Identity列将从其初始设置开始生成新的值。例如,如果初始设置是1,那么删除所有数据后...
在本篇中,我们将讨论如何重置MySQL自增列的初始值,并分析两种常用的方法及其适用场景。 **方法一:删除现有数据并设置新的初始值** ```sql DELETE FROM tb1; ALTER TABLE tbl AUTO_INCREMENT = 100; ``` 这种...
DBCC CHECKIDENT ('table_name') 或 DBCC CHECKIDENT ('table_name', RESEED) 命令如果表的当前标识值小于列中存储的最大标识值,则使用标识列中的最大值对其进行重置。例如: DBCC CHECKIDENT ('cs_Threads') ...