欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SQL Server 中調(diào)整自增字段的當(dāng)前初始值

 更新時(shí)間:2007年01月08日 00:00:00   作者:  
前幾天在把一個(gè)Communtiy Server 的數(shù)據(jù)庫(kù)從SQL 2000升級(jí)到SQL 2005 的時(shí)候,碰到一個(gè)怪異的問(wèn)題,報(bào)如下錯(cuò)誤:

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

分析進(jìn)去后,竟然發(fā)現(xiàn)這個(gè)表的自增字段數(shù)據(jù)庫(kù)中已經(jīng)達(dá)到了6144,而數(shù)據(jù)庫(kù)維護(hù)的這個(gè)表的初始自增值只到6109。

解決方法很簡(jiǎn)單,利用以下SQL 語(yǔ)句即可搞定:

DBCC CHECKIDENT ('cs_Threads')

上述語(yǔ)句的意思就是:如果表'cs_Threads'的當(dāng)前標(biāo)識(shí)值小于列中存儲(chǔ)的最大標(biāo)識(shí)值,則使用標(biāo)識(shí)列中的最大值對(duì)其進(jìn)行重置。

CHECKIDENT 命令可以有以下幾種寫法:

1、DBCC CHECKIDENT ('table_name', NORESEED) 

不重置當(dāng)前標(biāo)識(shí)值。DBCC CHECKIDENT 返回一個(gè)報(bào)表,它指明當(dāng)前標(biāo)識(shí)值和應(yīng)有的標(biāo)識(shí)值。 

類似如下的報(bào)表:

Checking identity information: current identity value '6109', current column value '6144'.

2、DBCC CHECKIDENT ('table_name') 或DBCC CHECKIDENT ('table_name', RESEED) 

如果表的當(dāng)前標(biāo)識(shí)值小于列中存儲(chǔ)的最大標(biāo)識(shí)值,則使用標(biāo)識(shí)列中的最大值對(duì)其進(jìn)行重置。

上述命令執(zhí)行的時(shí)候,也會(huì)報(bào)類似上面的報(bào)表。

3、DBCC CHECKIDENT ('table_name', RESEED, new_reseed_value) 

當(dāng)前值設(shè)置為 new_reseed_value。

如果自創(chuàng)建表后沒有將行插入該表,則在執(zhí)行 DBCC CHECKIDENT 后插入的第一行將使用 new_reseed_value 作為標(biāo)識(shí)。否則,下一個(gè)插入的行將使用 new_reseed_value + 1。

如果 new_reseed_value 的值小于標(biāo)識(shí)列中的最大值,以后引用該表時(shí)將產(chǎn)生 2627 號(hào)錯(cuò)誤信息。

相關(guān)文章

最新評(píng)論