如何更改sql server中的主键值?
我正在使用SQL server 2014如何更改sql server中的主键值?,sql,sql-server,sql-server-2014,Sql,Sql Server,Sql Server 2014,我正在使用SQL server 2014 在我的表中,我为列设置了主键。主键值从1开始。我想将其更改为从0开始。我怎样才能做到这一点呢?您可以为它重新设定种子 DBCC CHECKIDENT ('TableName', RESEED, 0); GO 这将创建一个表,其中autoinc字段以0而不是1开头 此外,最好命名主键 CREATE TABLE myTable ( id int IDENTITY(0,1), othercolumn int, and so on...
在我的表中,我为列设置了主键。主键值从1开始。我想将其更改为从0开始。我怎样才能做到这一点呢?您可以为它重新设定种子
DBCC CHECKIDENT ('TableName', RESEED, 0);
GO
这将创建一个表,其中autoinc字段以0而不是1开头
此外,最好命名主键
CREATE TABLE myTable
(
id int IDENTITY(0,1),
othercolumn int,
and so on...
constraint PK_myTableID primary key (id)
)
但是,如果要对现有表执行此操作,最好的选择是在表为空时使用的anwser,最简单的方法是删除该表,并像以前一样使用0的标识种子重新创建它。如果表中有数据,将主键更改为0(如所述)将是一个坏主意,因为在它插入一个键为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;
只需确保一次运行所有这些,因为一旦您打开identity insert,其他插入可能会失败,直到您关闭它。不要。主键的作用是唯一地标识每一行。如果更改该值,则会断开该值与行之间的链接。是指在现有表中还是在新表中?对于现有表,您不需要。在现有表中,我希望将主键值更改为从0开始。如果此表被另一个表用作外键,则您的关系将变得混乱。在这种情况下,如果不更改与此ONOK相关的所有表上所有外键的所有值,这是不可能的。我会试试。这似乎是现有表的最佳选择,因为您可以保留所有其他记录的所有键值不变,只需插入一个键值为0的新记录。所以我给你+1分