标识列不增加1?

时间:2015-12-30 05:43:08

标签: sql-server

我创建了4个表:

`Patient` (Id, Name, ..)

`Donor` (Id, Name, ..)

`BloodBank` (Id, Name, ..)

BloodBankDonors(DonorId, BloodBankId, ..)

并将Id列设置为Identity增加1,种子1.并在(Donor,BloodBank)和(BloodBankDonors)之间建立关系。 问题是当我在BloodBank和患者表中输入一些数据时,自动生成的Id栏分别为:1,3,4和1,4,5,8?

3 个答案:

答案 0 :(得分:1)

如此多的事情可能会导致IDENTITY列出现空白,例如回滚未重置IDENTITY,删除等。

那么,你为什么要关心差距呢?你不应该。如果您需要连续的数字序列,请停止使用IDENTITY。

谢谢...

答案 1 :(得分:0)

从表中删除数据包含日志信息保存ID(自动生成的列)以进行恢复。

尝试截断表并重新输入数据

x <-
id1 id2    val1  val2 val3 val4
1   a   x    1    9
2   a   x    2    4
3   a   y    3    5
4   a   y    4    9
5   b   x    1    7
6   b   y    4    4
7   b   x    3    9
8   b   y    2    8

愿这个帮助

答案 2 :(得分:0)

您可能会删除(删除命令)表“BloodBank”和“patient”中的某些记录。从表中删除记录包含用于恢复目的的列ID(自动生成列)的日志信息。而是在“DELETE”命令之后使用下面提到的代码片段:

DBCC CHECKIDENT('databasename.dbo.tablename', RESEED, number)
if number=0 then in the next insert the auto increment field will contain value 1

if number=101 then in the next insert the auto increment field will contain value 102.

要获得更明确的答案,请分享您用来创建表格和插入记录的sql脚本。