我有一个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