我对SQL和数据库很陌生,有一件事困扰着我。SQL Server:主键自动增量 - 删除的行和空闲键值是什么?
我为我的ASP.NET MVC项目使用SQL Server,我的数据库及其表是由实体框架使用代码优先方法自动生成的。
我有一个书籍收藏表 - 只有CollectionId
和Name
列。 在开发过程中,我在此表中进行了许多插入和删除,现在它有10行,Id
的1到10(最初的条目)。但是,当我添加一个新的时,它的Id
设置为37.显然以前有Id
到36的条目,但现在已经消失,这些数字似乎是免费的。
那么为什么新条目没有将Id
设置为11?这是一种限制还是安全功能?
谢谢你的回答。
https://www.google.ge/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=sql%20server%20identity%20reuse –
你应该永远不会***“重复使用“或”回收“以前使用过的自动生成的值。想象一下,在某个地方有一个审计表可以跟踪实体的创建情况 - 如果您在第一个对象被删除时回收该Id,那么您如何从6个月后开始说明Id = 11属于哪个对象,它后来出现了一个新的,完全独立的完全独立的对象?自动生成的ID - 一旦发布 - 完成,消失,再也不会被重复使用! –