0

ComplaintCodes約 15 行と 2 列を含むという名前のテーブルがComplaintCodeIdありますComplaintCodeText

そのテーブルに新しい行を挿入したいのですが、その ID を 1 に設定すると、既に存在するすべての ID にも 1 が追加されます。これは可能ですか?

編集

SQL Server を使用しComplaintCodeId、id / PK 列である

4

3 に答える 3

5

ID を更新する UPDATE とそれに続く INSERT という 2 つの別個の DML ステートメントとして可能です。ただし、もちろん、ID を別のテーブルの外部キーとして使用している場合、これは失敗するため、関連するすべてのテーブルで更新する方法を見つける必要があります。

なぜあなたはこれをしたいのですか?一歩下がって、この質問に至った設計上の決定を再考することをお勧めします。

そうです、podiluska が彼/彼女の(/its!) コメントで述べているように、質問やタグで使用している DBMS を指定してください。

于 2012-08-17T12:21:09.163 に答える
1

しばらく考えた結果、あなたの問題に対する最善の解決策は、PK を非 ID に変更することだと思われます。次に、値を好きなように設定できます。

私はまだ表示順序列を使用すること(これがテーブルの順序を気にすると思う唯一の理由です)が良い解決策になると思いますが、本当にPK順序を表示順序にしたい場合は、非アイデンティティへの PK は、将来これらの問題が発生しないため、長期的な解決策として適しています。

于 2012-08-17T13:03:49.163 に答える
1
update <table> set ComplaintCodeId =ComplaintCodeId +1

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

編集

PK+Identity 列の場合、このようにするのは非常に悪い考えです。ID 列は更新できません。

更新する代わりに、次のようなことができます。

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

ComplaintCodeId の代わりに row_num を使用します

于 2012-08-17T12:22:36.740 に答える