sql - sqlserver中如何修改主键值?

标签 sql sql-server sql-server-2014

我使用的是 SQL Server 2014。

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

最佳答案

如果表为空,最简单的做法是删除表并使用身份种子 0 重新创建它,例如 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;

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

关于sql - sqlserver中如何修改主键值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43138948/

相关文章:

sql - 加入 2 个临时表

c# - 将列表作为 XElement 传递以用作 XML 数据类型参数

sql-server - 如何查看哪个表占用了多少存储空间?

mysql - “INSERT IGNORE” 和 “… ON DUPLICATE KEY UPDATE” 都会发生什么?

sql - 使用存储过程将记录从详细信息表移动到历史表

sql - 从所有表和所有具有指定列名的数据库中查找列名 SQL Server

SQL查询查找单个上级下的所有下级

tsql - Out 参数被正确分配,但调用者只看到一个 NULL。线索?

sql - 如何使用具有 OR 子句的 COALESCE 创建动态 WHERE

php - SchemaGenerator 附加VARCHAR 字段,为什么?