重置MSSQL的Identity標識列的值

2021-04-28 09:28:13 字數 1115 閱讀 8202

當表中的記錄被全部刪除,但此時標識列的值越來越大的時候,如果不加以重置,它還會無休止的增長。

可以用如下語句重置標識列

dbcc checkident('table_name', [,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 並不自動重置當前標識值。若要在當前標識值大於列中的最大值時對當前標識值進行重置,請使用兩種方法中的任意一種:

VC CEvent類的介紹(手工重置 自動重置)

cevent類的乙個物件,表示乙個 事件 乙個允許乙個事件發生時執行緒通知另乙個執行緒的同步物件。在乙個執行緒需要了解何時執行任務時,事件是十分有用的。例如,拷貝資料到資料文件時,執行緒應被通知何時資料是可用的。當新資料可用時,通過運用cevent物件來通知拷貝執行緒,執行緒才可能盡快地執行。例如在...

fbra重置及重置並沖銷的區別

我們知道在做fbra時候有兩個選專案,乙個是只重置,乙個是重置並沖銷。fbra一般是用來對已經清帳的憑證進行沖銷的,我們知道普通的沖銷只要用fb08就可以了,但是對於已經被清帳和憑證,我們只能用fbra來進行清帳,我們來按以下的沒測試來做驗證一下。step1 用f 22做乙個應收帳款分錄如下 借 應...

MSSQL手札二 MSSQL的觸發器

觸發器,就是在對錶做dml操作的時候,觸發一些其他的事件,觸發器一般用在check約束更加複雜的約束上面,是一種特殊的儲存過程,不可以被主動呼叫。語法如下 create trigger trigger name on with encryption 如果顯式宣告了 after 觸發器,則也不能使用該...