
[英]SQL Server: copy a row and insert into a new row with a different ID
[英]SQL Server : insert a new row as ID of 1
我有一个名为ComplaintCodes
的表,其中包含约15行和2列: ComplaintCodeId
和ComplaintCodeText
。
我想在该表中插入一个新行,但将其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.