テーブルを作成しましたが、そのテーブルを変更したいと思います。主キーとを追加したいidentity(1,1)
。
主キーを適用できますが、IDを適用するとエラーが発生します。何か足りないものはありますか?
ALTER TABLE MyTable ADD PRIMARY KEY (Id)
主キーを使用してIDを追加するにはどうすればよいですか?
テーブルを作成しましたが、そのテーブルを変更したいと思います。主キーとを追加したいidentity(1,1)
。
主キーを適用できますが、IDを適用するとエラーが発生します。何か足りないものはありますか?
ALTER TABLE MyTable ADD PRIMARY KEY (Id)
主キーを使用してIDを追加するにはどうすればよいですか?
データベース内の既存の列の定義を変更して、IDENTITY
プロパティを追加することはできません(また、プロパティを削除することもできません)。次のプロパティを使用して新しい列を作成する必要があります。IDENTITY
ALTER TABLE MyTable ADD NewID int IDENTITY(1,1) not null
残念ながら、この新しい列に古いID値を割り当てることはできません。ID値を割り当ててからIDENTITY
引き継ぐ場合は、必要な構造で新しいテーブルを作成してから、古いテーブルからデータをインポートすることをお勧めします(列IDENTITY_INSERT
に値を割り当てるために使用できIDENTITY
ます)。
次に、必要に応じて、古いテーブルを削除し、新しいテーブルの名前を変更します。
これは、SQL Server 2019のテーブルにプログラムでIDENTITYを割り当てるための同じ答えを探していたためです。私の状況では、これを適用しようとしたテーブルは、IDENTITYを適用しようとした列がインポートされたテーブルでした。インポート元のテーブルにIDENTITYが含まれているため、IDENTITYの要件を満たしています。各値は一意であり、正しいデータ型でした。この研究や他の研究は、私がこれをプログラムで行うことができないことを理解するのに役立ちました。
しかし、それは私が実際に結果を達成することを妨げるものではありません。プログラムの代わりに、SSMSのデザインビューでテーブルを開き、シードとID間隔がテーブルの元の設定と一致する限り、そこにIDENTITYを割り当てることができます。明らかに、多くのテーブルが関係している場合はそれほど迅速な解決策ではありませんが、他の関連するテーブルで外部キーとして使用されている場合、IDENTITY値の整合性を保護します。
可能ですが、デザインモードで実行する必要があり、問題の列をIDとして指定する必要があります。テーブルを右クリックし、[デザイン]を選択して列に移動し、[列のプロパティ]で[IDの仕様]を探します。これですべての設定が完了しました。