[解決済み] 既存のカラムにIDを追加する
2022-03-20 11:12:29
質問
テーブルの主キーをIDカラムに変更する必要があり、テーブルにはすでに多数の行があります。
IDをクリーンアップして、1から始まる連続したIDにするスクリプトがありますが、テストデータベースではうまくいきました。
カラムにIDプロパティを持たせるには、どのようなSQLコマンドを実行すればよいですか?
どのように解決するのですか?
IDのために既存のカラムを変更することはできません。
2つのオプションがあります。
-
ID &で新しいテーブルを作成し、既存のテーブルを削除します。
-
新しいカラムを作成し、既存のカラムを削除します。
アプローチ1. ( 新しいテーブル ) ここで、新しく作成されたIDカラムに既存のデータ値を保持することができます。ただし、'if not exists' が満たされないと、すべてのデータを失うことになるので、ドロップの際にも条件を付けるようにしましょう!
CREATE TABLE dbo.Tmp_Names
(
Id int NOT NULL
IDENTITY(1, 1),
Name varchar(50) NULL
)
ON [PRIMARY]
go
SET IDENTITY_INSERT dbo.Tmp_Names ON
go
IF EXISTS ( SELECT *
FROM dbo.Names )
INSERT INTO dbo.Tmp_Names ( Id, Name )
SELECT Id,
Name
FROM dbo.Names TABLOCKX
go
SET IDENTITY_INSERT dbo.Tmp_Names OFF
go
DROP TABLE dbo.Names
go
Exec sp_rename 'Tmp_Names', 'Names'
アプローチ2 ( 新カラム ) 新しく作成されたIDカラムに既存のデータ値を保持することはできません、IDカラムは一連の番号を保持します。
Alter Table Names
Add Id_new Int Identity(1, 1)
Go
Alter Table Names Drop Column ID
Go
Exec sp_rename 'Names.Id_new', 'ID', 'Column'
詳しくは、以下のMicrosoft SQL Server Forumの投稿をご覧ください。
関連
-
[解決済み】SQL ServerでIdentityカラムを更新する方法は?
-
[解決済み] UNIONとUNION ALLの違いは何ですか?
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] カラムの変更:NULLをNOT NULLに変更する
-
[解決済み] SQL Server - 挿入された行のIDを取得するための最良の方法は?
-
[解決済み] SQL Serverでレコードを削除した後、IDシードをリセットする。
-
[解決済み] カラム名の変更 SQL Server 2008
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
-
[解決済み】MySQLのカラムをAUTO_INCREMENTに変更する。
-
[解決済み】オブジェクト 'DF__*' が列 '*' に依存している - int を double に変更する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
org.postgresql.util.PSQLException: ERROR: リレーション "userinfo" の列 "loginid" が存在しません。
-
[解決済み] PostgreSQLのCREATE DATABASE IF NOT EXISTSをシミュレートしてみませんか?
-
[解決済み] SQLテーブルで重複する値を検索する
-
[解決済み] ...値に挿入する ( SELECT ... FROM ... )
-
[解決済み] JOINとINNER JOINの違いについて
-
[解決済み] SQL Serverでシングルクォートをエスケープするにはどうすればよいですか?
-
[解決済み] INNER JOINよりもCROSS APPLYを使用すべきなのはどのような場合ですか?
-
[解決済み] SQL SELECT WHERE フィールドに単語が含まれる場合
-
[解決済み] Selectステートメントで特定のフィールドの重複を検索する
-
[解決済み] VARCHARとCHARの違いは何ですか?