重置数据库从增字段(转)

SQLServer

将一个Communtiy Server的数据库
于SQL 2000升官至SQL 2005的下报如下错误:

Violation of PRIMARY KEY
constraint ‘PK_cs_Threads’.
Cannot insert duplicate key in object ‘dbo.cs_Threads’.

剖析上后,竟然发现此发明底自增字段数据库中已经上了6144,
假定数据库维护的之表底起来自增值只及6109。

缓解方法十分粗略,利用以下SQL
语句即可搞定:

DBCC CHECKIDENT
(‘cs_Threads’)

上述话语的意思:如果表’cs_Threads’的目前标识值小于列被储存的最好老标识值,则应用标识列中的最为深价值对其开展重置。

CHECKIDENT
命令可以产生以下几种写法:

1、DBCC CHECKIDENT
(‘table_name’, NORESEED)

     
不重置当前标识值。DBCC CHECKIDENT
返回一个表格,它指明当前标识值和应的标识值。

    
类似如下的表:

      Checking identity
information: current identity value ‘6109’, current column value
‘6144’.

2、DBCC CHECKIDENT
(‘table_name’) 或DBCC CHECKIDENT (‘table_name’, RESEED)

    
如果表的当前标识值小于列着储存的极度充分标识值,则采用标识列中之卓绝要命价值对其开展重置。

    
上述命令执行的时,也会见报类似上面的报表。

3、DBCC CHECKIDENT
(‘table_name’, RESEED, new_reseed_value)

     当前值设置为
new_reseed_value。

     
如果从创立表后从未有过以行插入该表,则于推行 DBCC CHECKIDENT
后插入的率先履行以祭 new_reseed_value 作为标识。
      否则,下一个栽的就要使用 new_reseed_value + 1。

    如果
new_reseed_value 的价值小于标识列中之极端可怜价值,以后引用该表时用时有发生 2627
哀号错误信息。

ACCESS

//Clear the records of the
Assetdispisition table
string sqlString = “Delete from AssetDisposition”;

//Reset the
RowID as 1 to autoincrement.
sqlString = “Alter table AssetDisposition alter column RowID
autoincrement(1,1)”;

相关文章