0

我有一个名为的表customer_master,其中包含一个名为cust_idautoincrement 设置为 1 的列。

当我们尝试插入记录时,它的工作正常并且插入了cust_id1、2、3 和 4 等记录,但是当插入命令中产生错误时,我们会执行事务回滚,这意味着cust_id没有插入 5,但是当我们插入另一条记录,cust_id生成 6。它跳过cust_id5。

我想对其进行设置,以便如果在插入命令中生成任何错误,则标识不会增加。

我们正在使用 c# 和 sql server 2005。

4

2 回答 2

1

SQL Server 这样做的原因是为了提高效率。如果您需要一个不应该使用的没有间隙的序列号,则identity需要实现自己的方案,其中并发事务被阻止等待下一个值,以防初始事务回滚。

此处的第二个查询可用于此目的。但是你真的需要这个吗?如果纯粹出于审美目的,我的建议是不要担心!

于 2010-10-02T11:53:13.400 回答
0

插入失败后,您可以使用DBCC CHECKIDENT重新设定标识列的种子。

DBCC CHECKIDENT (table_name, NORESEED)返回当前标识值和标识列的当前最大值。

DBCC CHECKIDENT (table_name, RESEED, new_reseed_value)将当前标识值设置为 new_reseed_value。

于 2010-10-02T11:36:17.770 回答