既存の列にIDを追加する 質問する

既存の列にIDを追加する 質問する

テーブルの主キーを ID 列に変更する必要がありますが、テーブルにはすでにいくつかの行があります。

ID をクリーンアップして、1 から始まる連続番号であることを確認するスクリプトがあり、テスト データベースでは正常に動作します。

列を変更して ID プロパティを持たせる SQL コマンドは何ですか?

ベストアンサー1

ID の既存の列を変更することはできません。

2つの選択肢があります。

  1. 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 フォーラムの投稿を参照してください。

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

おすすめ記事