[英]Primary Key Identity Value Increments On Unique Key Constraint Violation
我有一個SqlServer 2008表,它有一個主鍵(IsIdentity = Yes)和三個構成唯一鍵約束的其他字段。
另外我有一個將記錄插入表中的存儲過程,我使用SqlConnection對象通過C#調用sproc。
C#sproc調用工作正常,但是當C#sproc調用違反Unique Key約束時,我注意到了有趣的結果....
當sproc調用違反Unique Key約束時,拋出SqlException - 這並不奇怪和酷。 但是,我注意到成功添加到表中的下一條記錄的PK值並不比前一條記錄多一個 -
例如:假設該表有五個記錄,其中PK值為1,2,3,4和5.sproc嘗試插入第六條記錄,但違反了唯一鍵約束,因此,第六條記錄不是插入。 然后sproc嘗試插入另一條記錄,這次它成功了。 - 這個新記錄的PK值為7而不是6。
這是正常的行為嗎? 如果是這樣,你能告訴我為什么會這樣嗎? (如果記錄無法插入,為什么PK索引會增加?)
如果這不是正常行為,你能否給我一些提示,看看為什么我會看到這些症狀?
是的,這很正常。
想象一下這里發生的事務,這是在SQL Server上運行的潛在操作順序。
由於(不一定存在)此行為的可能性,您會看到在插入失敗時跳過ID 6。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.