我有一個表叫customer_master
,其中包括一個名爲cust_id
與自動增量設置爲1插入數據
當我們嘗試插入記錄其工作的罰款,並插入記錄,如cust_id
1,2列,插入了3和4,但是當插入命令生成錯誤時,我們執行事務回滾,這意味着沒有插入cust_id
5,但是當我們插入另一條記錄時,cust_id
生成了6.它跳過cust_id
5.
我想設置它,以便在插入命令中生成任何錯誤時,身份不會遞增。
我們使用C#和SQL Server 2005
我有一個表叫customer_master
,其中包括一個名爲cust_id
與自動增量設置爲1插入數據
當我們嘗試插入記錄其工作的罰款,並插入記錄,如cust_id
1,2列,插入了3和4,但是當插入命令生成錯誤時,我們執行事務回滾,這意味着沒有插入cust_id
5,但是當我們插入另一條記錄時,cust_id
生成了6.它跳過cust_id
5.
我想設置它,以便在插入命令中生成任何錯誤時,身份不會遞增。
我們使用C#和SQL Server 2005
可以使用DBCC CHECKIDENT插入失敗後補種標識列。
DBCC CHECKIDENT(table_name,NORESEED)返回標識列的當前標識值和當前最大值。
DBCC CHECKIDENT(table_name,RESEED,new_reseed_value)將當前標識值設置爲new_reseed_value。
SQL Server這樣做的原因是爲了提高效率。如果你需要沒有間隙的序號,你不應該使用identity
你需要實現你自己的方案,在併發事務被阻塞的情況下等待下一個值,以防止初始事務回滾。
The second query here could be used for that purpose。但是你真的需要這個嗎?如果純粹是出於審美目的,我的建議是不要擔心!