2010-10-02 72 views
0

我有一個表叫customer_master,其中包括一個名爲cust_id與自動增量設置爲1插入數據

當我們嘗試插入記錄其工作的罰款,並插入記錄,如cust_id 1,2列,插入了3和4,但是當插入命令生成錯誤時,我們執行事務回滾,這意味着沒有插入cust_id 5,但是當我們插入另一條記錄時,cust_id生成了6.它跳過cust_id 5.

我想設置它,以便在插入命令中生成任何錯誤時,身份不會遞增。

我們使用C#和SQL Server 2005

回答

0

可以使用DBCC CHECKIDENT插入失敗後補種標識列。

DBCC CHECKIDENT(table_name,NORESEED)返回標識列的當前標識值和當前最大值。

DBCC CHECKIDENT(table_name,RESEED,new_reseed_value)將當前標識值設置爲new_reseed_value。

1

SQL Server這樣做的原因是爲了提高效率。如果你需要沒有間隙的序號,你不應該使用identity你需要實現你自己的方案,在併發事務被阻塞的情況下等待下一個值,以防止初始事務回滾。

The second query here could be used for that purpose。但是你真的需要這個嗎?如果純粹是出於審美目的,我的建議是不要擔心!