8

レコードのバンドルを含む SQL Server のテーブルがあります。データを失うことなく、主キーである ID 列を ID 列に変換したいと考えています。以下の2つの方法を考えました。

  1. ID を使用して新しいテーブルを作成し、既存のテーブルを削除します。
  2. ID を使用して新しい列を作成し、既存の列を削除します。

しかし、記録を残すことが私の最優先事項であるため、実行できないことは明らかです。

これを行う別の方法はありますか?

4

5 に答える 5

4

この解決策はあなたのポイント2に違反していますが、他に方法はなく、あなたの目的は古い値を維持することだと思います.

次のことができます。

  1. テーブルの ID 列に挿入できるようにします。

    set identity_insert YourTable ON
    
  2. IDを使用してテーブルに新しいID列を追加し、古い列から値を挿入します
  3. ID 挿入をオフにする

    set identity_insert YourTable OFF
    
  4. 古い ID 列を削除する
  5. 新しい列の名前を古い名前に変更
  6. 主キーにする

唯一の問題は、ID 列が既に外部キーとして他のテーブルに接続されていることです。次に、古い列を削除する際に問題が発生します... この場合、手順 3 の後に ID 列の外部キー制約を削除し、手順 4 から 6 を実行してから、外部キー制約を再作成する必要があります。

于 2013-10-25T08:16:36.910 に答える
2

サーバー データベースに直接アクセスできる場合は、テーブルの設計に入り、PK 列を選択して、ID を "Yes" に変更します。シードをその列の最大値に設定してください。デフォルトの増分は 1 です。テーブルのデザインを保存すると、準備完了です。 ここに画像の説明を入力

于 2016-08-30T20:33:42.920 に答える