我有一個SqlServer 2008表具有一個主鍵(IsIdentity =是)和三個其他字段組成一個唯一鍵約束。主鍵身份價值增量在唯一鍵約束違規
此外,我有一個存儲過程插入一個記錄到表中,我通過C#使用SqlConnection對象調用存儲過程。
C#的存儲過程調用工作正常,但是當C#存儲過程調用違反唯一鍵約束我已經注意到有趣的結果....
當存儲過程調用違反唯一鍵約束,則拋出SQLException - 這並不令人驚訝和冷靜。但是,我注意到下一個成功添加到表中的記錄的PK值並不比之前的記錄多一個 -
例如:假設表中有五個記錄,其中PK值爲1, 2,3,4和5. sproc試圖插入第六條記錄,但是違反了唯一鍵約束,因此第六條記錄未被插入。然後這個sproc嘗試插入另一個記錄,這次它是成功的。 - 這個新紀錄的PK值是7而不是6.
這是正常行爲嗎?如果是這樣,你能給我一個這樣的原因嗎? (如果記錄未能插入,爲什麼PK指數會遞增?)
如果這不是正常行爲,您能否給我提示我爲什麼會看到這些症狀?
是的,你永遠不能指望標識字段永不跳過值。 – HLGEM 2010-08-23 21:04:10