我如何auto increment在primary key一个SQL Server数据库表,我已经通过论坛看看,但不能看到.
我查看了属性,但看不到一个选项,我看到了一个答案,你去了Identity规范属性并将其设置为是并设置Identity increment为1,但该部分显示为灰色,我无法更改不,是的.
必须有一个简单的方法来做到这一点,但我找不到它.
我有一个奇怪的情况,我的SQL Server 2012数据库中的自动标识int列没有正确递增.
假设我有一个使用int自动标识作为主键的表,它偶尔会跳过增量,例如:
1,2,3,4,5,1004,1005
这是在随机数量的随机时间表上发生的,无法复制它以查找任何趋势.
这是怎么回事?有办法让它停止吗?
我正在使用Sql server 2012(Denali).我想知道为什么所有标识列值都从1001开始,依此类推.在开始Identity列从1,2开始,依此类推,并顺利添加标识,但突然它跳转到1001,1002以及包含标识列的数据库中的所有表.可能是什么原因?请协助.
目前正在使用Entity Framework 5处理ASP.Net MVC 4应用程序.使用CodeFirst进行初始开发阶段.但现在已禁用自动迁移并直接使用SSMS设计新表并编写POCO.一切都很好.
最近,在生产中发现了一个奇怪的问题.其中一个最初设计的表中的记录跳过自动增量标识值超过900个数字.这在过去3个月内发生了3次.在本地调试应用程序但无法重现.没有观察到任何模式或趋势.
模型:
public class Enquiry
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public Int64 EnquiryId { get; set; }
[Required]
public int UserId { get; set; }
[Required]
public byte Bid { get; set; }
...
[Required]
public DateTime Created { get; set; }
[Required]
public DateTime Modified { get; set; }
}
public class EnquiryDetail
{
[Key]
public Int64 EnquiryId { get; set; }
[Required]
public int CreditScore { get; set; }
[Required]
public byte BidMode { get; …Run Code Online (Sandbox Code Playgroud) sql-server entity-framework asp.net-mvc-4 entity-framework-5 azure-sql-database
我有个问题.
我的ID主要(IDENTITY)配置为自动递增(类型:int).但是,当我插入一个新行时,这个新的id不是连续的.怎么了?有解决方案吗
编辑:
[...]
[id]int] IDENTITY(1,1) NOT NULL,
[...]
CONTRAINT [PK_Medida] PRIMARY KEY CLUSTERED
(
[id] ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud) 我们正在运行SQL Server 2012 SP1 x64(11.0.3000.0)
我有下表与InvoiceId字段作为自动递增,主键:
CREATE TABLE Orders(
InvoiceId bigint IDENTITY(1001,1) NOT FOR REPLICATION,
OrderId varchar(8) NOT NULL,
... -- other fields removed for brevity
CONSTRAINT [PK_ORDERS] PRIMARY KEY CLUSTERED (InvoiceId)
ON [PRIMARY],
)
Run Code Online (Sandbox Code Playgroud)
通过一个简单的存储过程插入新行,如下所示:
SET XACT_ABORT ON
SET NOCOUNT ON
BEGIN TRANSACTION
INSERT INTO Orders(
OrderId,
... -- other fields removed for brevity
)
VALUES (
@orderId,
...
)
SELECT @newRowId = SCOPE_IDENTITY()
COMMIT TRANSACTION
Run Code Online (Sandbox Code Playgroud)
上面的sproc将新创建的row-id(Orders.InvoiceId)返回给调用者.
代码工作正常,[InvoiceId]从1001开始,每个连续插入递增1.
我们的用户插入了大约130行.[InvoiceId]是在1130,然后在下一个插入其价值跃升至11091! …
我在数据库中遇到了一些有趣的事情.主键增加如下:
1
2
3
4
5
6
7
8
1001
Run Code Online (Sandbox Code Playgroud)
我正在使用EntityFramework或有时使用LINQ to SQL.
我正在建立一个基本的CRUD页面,在初学者asp.net-core-mvc/ef-core教程之后
每次我通过我的mvc网站重建和创建新记录时,我都注意到我的Id已经跳了1000
例如,我前几行的id是:
我怎么阻止这个?我以前从未见过这种行为.从一些谷歌搜索似乎是一个sql 2012问题,但我没有使用sql 2012.
我正在使用mssqllocaldb,一切都已更新,我安装了SSMS2014
它们似乎是相当大的跳跃,甚至成千上万.这是一个例子:

该表的最后一个ID超过了30.000标记,即使表中的行数少于一千行.
编辑:这发生在我的一个旧的,小型的桌面应用程序中,我还没有删除此表中的行,也没有使用任何事务和回滚.
我有一张100,000,000行的大桌子.我想从表中选择每一行.我的第一直觉是使用这样的东西:
SELECT id,name FROM table WHERE id%125000=0
Run Code Online (Sandbox Code Playgroud)
检索800行的均匀传播(id是聚簇索引)
这种技术在较小的数据集上运行良好,但对于我的较大的表,查询需要2.5分钟.我假设这是因为模数运算应用于每一行.是否有更优化的行跳过方法?