Sql server SQL Server:插入一个新行作为ID 1

Sql server SQL Server:插入一个新行作为ID 1,sql-server,tsql,Sql Server,Tsql,我有一个名为ComplaintCodes的表,它包含大约15行和2列:ComplaintCodeId和ComplaintCodeText 我想在该表中插入一个新行,但其ID设置为1,这也会将1添加到所有已存在的ID中。这可能吗 编辑 使用SQL Server和ComplaintCodeId是一个identity/PK列它可以作为两个独立的DML语句,一个用于更新ID的更新和一个后续插入。但是,如果在另一个表中使用ID作为外键,那么这将失败,因此您需要找到一种方法来跨所有相关表进行更新 你为什么要

我有一个名为ComplaintCodes的表,它包含大约15行和2列:ComplaintCodeId和ComplaintCodeText

我想在该表中插入一个新行,但其ID设置为1,这也会将1添加到所有已存在的ID中。这可能吗

编辑
使用SQL Server和ComplaintCodeId是一个identity/PK列

它可以作为两个独立的DML语句,一个用于更新ID的更新和一个后续插入。但是,如果在另一个表中使用ID作为外键,那么这将失败,因此您需要找到一种方法来跨所有相关表进行更新

你为什么要这么做?建议您退后一步,重新考虑将您带入此问题的设计决策

是的,正如波迪卢斯卡在他/她/她的信中所说的那样!注释,请指定您在问题和/或标记中使用的DBMS

update <table> set ComplaintCodeId =ComplaintCodeId +1

insert into <table>
select 1,'other column'

使用row_num而不是ComplaintCodeId经过一番思考,我认为解决问题的最佳方法是将PK改为非身份。然后您可以将该值设置为您想要的任何值


我仍然认为使用显示顺序列是一个很好的解决方案,这是我认为您关心表中顺序的唯一原因,但是如果您真的希望PK顺序成为显示顺序,那么,将PK更改为非标识将是一个很好的长期解决方案,因为您将来不会遇到这些问题。

取决于您使用的SQL的种类。ComplaintCodeId是外键吗?ID值是从1开始的顺序值还是它们之间的间隔?我不知道你的种子价值是怎么开始的。但是你应该认真考虑一下你的设计,如果你依赖PK来显示订单,那你就错了。添加一个DisplayOrder列并对该值进行排序。如果ID是标识列,则无法执行此操作。您可以将ID列的特定值插入新行,但不能更改/更新现有标识列的值的add+1。@marc_s-我想如果这些值是连续的,并且没有关系将选择的当前数据脚本化到临时表,截断表,插入记录,然后重新插入旧值。充其量只能说是粗俗的
select row_number() over (order by ComplaintCodeId desc) as row_num,
       ComplaintCodeId 
from table