Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 对于Id较大的行,是否使用DBCC CHECKIDENT safe重置主键_Sql_Sql Server_Tsql_Primary Key_Dbcc - Fatal编程技术网

Sql 对于Id较大的行,是否使用DBCC CHECKIDENT safe重置主键

Sql 对于Id较大的行,是否使用DBCC CHECKIDENT safe重置主键,sql,sql-server,tsql,primary-key,dbcc,Sql,Sql Server,Tsql,Primary Key,Dbcc,我有一个主键为整数值的表,它一个接一个地自动递增,表中的值一直很好,直到116,突然过了一会儿,它从10085值继续 我不知道为什么,但也许我做了一个心理医生数据库。但无论如何,我知道DBCC CHECKIDENT命令 我的问题是,如果我运行DBCC CHECKIDENT(mytable,RESEED,116),它是否会在将来损害Id为100085的行? 我的意思是,当有一天我的行数达到100084时,sql server会从其他Id跳转,还是会抛出异常以插入重复Id?不建议使用以下命令 DBC

我有一个主键为整数值的表,它一个接一个地自动递增,表中的值一直很好,直到116,突然过了一会儿,它从10085值继续

我不知道为什么,但也许我做了一个心理医生数据库。但无论如何,我知道DBCC CHECKIDENT命令

我的问题是,如果我运行
DBCC CHECKIDENT(mytable,RESEED,116)
,它是否会在将来损害Id为100085的行?
我的意思是,当有一天我的行数达到100084时,sql server会从其他Id跳转,还是会抛出异常以插入重复Id?

不建议使用以下命令

DBCC CHECKIDENT (mytable, RESEED, 116) 
因为当您的行达到100084时,它将抛出异常


欲了解更多信息,请阅读以下内容。它表示建议从表中删除所有行。如果要使用DBCC CHECKIDENT重新设定表种子,请不要执行此操作

当标识列达到100084时,它将抛出重复键异常

它不会神奇地跳过以前生成的值以避免冲突。你可以很容易地从下面看到这一点

CREATE TABLE mytable
  (
     x INT IDENTITY PRIMARY KEY,
     Y INT
  )

INSERT INTO mytable
            (Y)
SELECT TOP (200) number
FROM   master..spt_values

DELETE FROM mytable
WHERE  x BETWEEN 1 AND 150;

DBCC CHECKIDENT (mytable, RESEED, 1)

/*Works OK*/
INSERT INTO mytable
            (Y)
SELECT TOP (149) number
FROM   master..spt_values

/*Error*/
INSERT INTO mytable
            (Y)
SELECT TOP (10) number
FROM   master..spt_values 
Msg 2627,第14级,状态1,第25行违反主键 约束“PK_uumytable_uuu3BD019E5518439DD”。无法插入重复项 输入对象“dbo.mytable”。重复的键值为(151)。这个 声明已终止