我有称为一个表customer_master
包括称为柱cust_id
与自动增量设置为1。
当我们试图插入记录其工作的罚款,并插入记录,如cust_id
插入1,2,3和4,但是当我们做一个事务回滚INSERT命令时产生的错误,这意味着cust_id
5未插入,但当我们插入另一个纪录, cust_id
产生6.跳过cust_id
5。
我想设置它,这样如果在插入命令产生的任何错误的身份不会增加。
我们使用C#和SQL Server 2005。
我有称为一个表customer_master
包括称为柱cust_id
与自动增量设置为1。
当我们试图插入记录其工作的罚款,并插入记录,如cust_id
插入1,2,3和4,但是当我们做一个事务回滚INSERT命令时产生的错误,这意味着cust_id
5未插入,但当我们插入另一个纪录, cust_id
产生6.跳过cust_id
5。
我想设置它,这样如果在插入命令产生的任何错误的身份不会增加。
我们使用C#和SQL Server 2005。
究其原因SQL Server会,这是为了提高效率。 如果你需要无间隙的序列号,你不应该使用identity
,你将需要实现自己的方案,其中并发事务阻塞,等待下一个值,以防万一初始事务回滚。
这里的第二个查询可用于这一目的 。 但是,你真的需要吗? 如果纯粹是为了美观而我的建议是不要担心!
您可以使用DBCC CHECKIDENT插入失败后补种标识列。
返回当前标识值和标识列的当前最大值。
将当前标识值给new_reseed_value。