ComplaintCodes
約 15 行と 2 列を含むという名前のテーブルがComplaintCodeId
ありますComplaintCodeText
。
そのテーブルに新しい行を挿入したいのですが、その ID を 1 に設定すると、既に存在するすべての ID にも 1 が追加されます。これは可能ですか?
編集
SQL Server を使用しComplaintCodeId
、id / PK 列である
ComplaintCodes
約 15 行と 2 列を含むという名前のテーブルがComplaintCodeId
ありますComplaintCodeText
。
そのテーブルに新しい行を挿入したいのですが、その ID を 1 に設定すると、既に存在するすべての ID にも 1 が追加されます。これは可能ですか?
SQL Server を使用しComplaintCodeId
、id / PK 列である
ID を更新する UPDATE とそれに続く INSERT という 2 つの別個の DML ステートメントとして可能です。ただし、もちろん、ID を別のテーブルの外部キーとして使用している場合、これは失敗するため、関連するすべてのテーブルで更新する方法を見つける必要があります。
なぜあなたはこれをしたいのですか?一歩下がって、この質問に至った設計上の決定を再考することをお勧めします。
そうです、podiluska が彼/彼女の(/its!) コメントで述べているように、質問やタグで使用している DBMS を指定してください。
しばらく考えた結果、あなたの問題に対する最善の解決策は、PK を非 ID に変更することだと思われます。次に、値を好きなように設定できます。
私はまだ表示順序列を使用すること(これがテーブルの順序を気にすると思う唯一の理由です)が良い解決策になると思いますが、本当にPK順序を表示順序にしたい場合は、非アイデンティティへの PK は、将来これらの問題が発生しないため、長期的な解決策として適しています。
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 を使用します