0

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

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

编辑

使用 SQL Server 并且ComplaintCodeId是一个身份/PK 列

4

3 回答 3

5

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

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

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

于 2012-08-17T12:21:09.163 回答
1
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

于 2012-08-17T12:22:36.740 回答
1

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

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

于 2012-08-17T13:03:49.163 回答