1. ホーム
  2. sql

[解決済み] 既存のカラムにIDを追加する

2022-03-20 11:12:29

質問

テーブルの主キーをIDカラムに変更する必要があり、テーブルにはすでに多数の行があります。

IDをクリーンアップして、1から始まる連続したIDにするスクリプトがありますが、テストデータベースではうまくいきました。

カラムにIDプロパティを持たせるには、どのようなSQLコマンドを実行すればよいですか?

どのように解決するのですか?

IDのために既存のカラムを変更することはできません。

2つのオプションがあります。

  1. ID &で新しいテーブルを作成し、既存のテーブルを削除します。

  2. 新しいカラムを作成し、既存のカラムを削除します。

アプローチ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の投稿をご覧ください。

列をidentity(1,1)に変更する方法