繁体   English   中英

SQL Server:插入新行作为ID为1

[英]SQL Server : insert a new row as ID of 1

我有一个名为ComplaintCodes的表,其中包含约15行和2列: ComplaintCodeIdComplaintCodeText

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

编辑

使用SQL Server和ComplaintCodeId是一个标识/ PK列

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

您为什么要这样做? 建议您退后一步,重新考虑使您遇到此问题的设计决策。

是的,正如podiluska在他/她的评论中所说,请在您的问题和/或标签中指定使用的是哪个DBMS。

update <table> set ComplaintCodeId =ComplaintCodeId +1

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

编辑

如果它是PK + Identity列,那么这样做是一个非常糟糕的主意。 您无法更新标识列。

除了更新,您可以执行以下操作:

select row_number() over (order by ComplaintCodeId desc) as row_num,
       ComplaintCodeId 
from table

并使用row_num代替ComplaintCodeId

经过一番思考,在我看来,解决您的问题的最佳方法是将PK更改为非身份。 然后,您可以将值设置为所需的任何值。

我仍然认为使用Display Order列(这是我认为您会关心表格中的顺序的唯一原因)将是一个很好的解决方案,但是如果您确实希望PK顺序成为显示顺序,则可以更改PK身份验证将是一个很好的长期解决方案,因为将来您不会遇到这些问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM