如何更改sql server中的主键值?

时间:2017-03-31 10:55:39

标签: sql sql-server sql-server-2014

我正在使用SQL Server 2014。

在我的表中,我为列设置了主键。主键值从1开始。我想将其更改为从0开始。如何实现此目的?

3 个答案:

答案 0 :(得分:4)

这会创建一个表,其中autoinc字段以0开头而不是1 此外,最好为主键命名

CREATE TABLE myTable
(
    id int IDENTITY(0,1),
    othercolumn int,
    and so on...

    constraint PK_myTableID primary key (id)
)

如果你想用现有的表格做这个,那么你最好选择使用Element Zero的anwser

答案 1 :(得分:2)

如果表是空的,最简单的方法是删除表并使用类似GuidoG的标识种子重新创建它。如果表有数据,将主键更改为0(如Intern87提及)将是一个坏主意,因为在插入一个键为0的行后,下一个键将是1,这可能已经在该表因此会导致进一步的插入失败并出现主键重复错误。

因此,如果您有现有数据,但您必须拥有密钥为0的数据,我可能只会使用第0行进行标识插入。使用以下内容执行此操作

SET IDENTITY_INSERT mytable ON;

INSERT INTO mytable (id, col1, col2, etc..) 
VALUES (0, 'col1data','col2data', etc..);

SET IDENTITY_INSERT mytable OFF;

只需确保立即运行所有这些,因为一旦你打开身份插入,其他插入可能会失败,直到你关闭它。

答案 2 :(得分:1)

你可以重新种植它;

DBCC CHECKIDENT ('TableName', RESEED, 0);
GO