我从SQL Server数据库的一个表中删除了一些记录。
表中的id是这样的:
99 100 101 1200 1201...
我想删除后来的记录(ID >1200),然后我想重置自动增量,以便下一个自动生成的ID将是102。所以我的记录是顺序的,有办法做到这一点在SQL Server?
我从SQL Server数据库的一个表中删除了一些记录。
表中的id是这样的:
99 100 101 1200 1201...
我想删除后来的记录(ID >1200),然后我想重置自动增量,以便下一个自动生成的ID将是102。所以我的记录是顺序的,有办法做到这一点在SQL Server?
当前回答
执行以下命令重新播种mytable,使其从1开始:
DBCC CHECKIDENT (mytable, RESEED, 0)
在联机书籍(BOL, SQL帮助)中阅读它。还要注意,你的记录不要高于你所设置的种子。
其他回答
重置数据库中的每个键,从最后一个最高键的最大值开始自动递增:
Exec sp_MSforeachtable 'DBCC CHECKIDENT(''?'', RESEED, 0)'
Exec sp_MSforeachtable 'DBCC CHECKIDENT(''?'', RESEED)'
我想明白了。它是:
DBCC CHECKIDENT ('tablename', RESEED, newseed)
执行以下命令重新播种mytable,使其从1开始:
DBCC CHECKIDENT (mytable, RESEED, 0)
在联机书籍(BOL, SQL帮助)中阅读它。还要注意,你的记录不要高于你所设置的种子。
我知道这是一个老问题。然而,我正在为MySQL寻找类似的解决方案,这个问题出现了。
对于那些正在寻找MySQL解决方案的人,你需要运行这个查询:
// important!!! You cannot reset the counter to a value less than or equal to the value that is currently in use. For both InnoDB and MyISAM, if the value is less than or equal to the maximum value currently in the AUTO_INCREMENT column, the value is reset to the current maximum AUTO_INCREMENT column value plus one.
ALTER TABLE <your-table-name> AUTO_INCREMENT = 100
文档
半保证没有白痴:
declare @max int;
select @max = max(key) from table;
dbcc checkident(table,reseed,@max)
http://sqlserverplanet.com/tsql/using-dbcc-checkident-to-reseed-a-table-after-delete