Sql server MS-SQL填写标识列值
我正在使用SQL 2008 Developer edition和SQL 2005兼容模式下的DB构建一个ASP.Net/MVC应用程序。使用实体框架作为DAL 我的问题是,我有一个表,我在其中使用整数标识列,就像发票号一样,也就是说,它必须是唯一的,并且永远不能重复使用。因此,如果不付出很大努力,使用GUID列类型是行不通的Sql server MS-SQL填写标识列值,sql-server,asp.net-mvc,entity-framework,Sql Server,Asp.net Mvc,Entity Framework,我正在使用SQL 2008 Developer edition和SQL 2005兼容模式下的DB构建一个ASP.Net/MVC应用程序。使用实体框架作为DAL 我的问题是,我有一个表,我在其中使用整数标识列,就像发票号一样,也就是说,它必须是唯一的,并且永远不能重复使用。因此,如果不付出很大努力,使用GUID列类型是行不通的 我看到的是DB正在填补标识栏中的空白。这将给我带来长期的问题。是否有设置来禁用此“填充”听起来像SQL server之外的东西;SQL server不会“返回”并重新使用标
我看到的是DB正在填补标识栏中的空白。这将给我带来长期的问题。是否有设置来禁用此“填充”听起来像SQL server之外的东西;SQL server不会“返回”并重新使用标识中的间隙,除非表已重新设定种子,但即使如此,它也会一个接一个地盲目递增,并且在命中具有现有值的行时可能会返回大量重复的键错误
您确定该列是一个标识吗?在创建行时,是否还有其他可能重新分配键和/或启用标识插入的操作?默认情况下,SQL Server不会填补标识字段的空白,它只会在插入行时不断增加数字 可以将标识重置回1,因此您可以看到所描述的内容
我建议您发布一些代码/db结构,显示您的问题,并搜索您可能拥有的任何代码,以便我执行身份重新设定。除非我没有正确理解您的问题。如果在标识列上创建主键或唯一约束,则可以避免重复值的问题 例如:
create table TableName
(
InvoiceID int identity(1,1) not null primary key
)
这是我的想法,但看看数据库中的数据,它看起来确实不像。但在阅读了所有人的评论后,我回去重新验证了这些东西,它工作正常。谢谢