我创建了一个Employee
表,其中包含以下列和约束:
EmpId(Primary Key, Identity(1,1),not null)
EmpName
EmpJob
etc.
然后我尝试通过ADO.NET从aspx页面插入Employee
值,遗憾的是它生成了EmpId
Employee
的错误序列,序列是
2 3 4 5 6 7 9 17 18.
我不知道为什么会这样,所以请帮助我。
答案 0 :(得分:1)
身份不能保证序列中没有间隙。因此,它不应该被用于此。 取消/滚动支持的查询和/或删除的条目等情况将在序列中产生间隙。
身份用于提供一个独特的"基于当前种子的并发交易的id'值。 但它不保证没有差距(可以删除entires,可以回滚查询),多个事务的唯一性(种子可以更改)或类似。
如果你想拥有一个完整的整数序列,你必须在每次插入/更新/删除条目后自己维护它。 但总的来说 - 在大多数情况下都不需要这样的序列,因为在使用身份作为排序时(例如),你通常不会仅仅对排序/相对位置感兴趣。