ホームページ >データベース >mysql チュートリアル >データを含む既存の SQL Server テーブルに ID 列を追加するにはどうすればよいですか?

データを含む既存の SQL Server テーブルに ID 列を追加するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-22 23:01:11394ブラウズ

How Can I Add an Identity Column to an Existing SQL Server Table with Data?

既存の SQL Server テーブルへの ID 列の追加

問題: すでにデータが含まれている SQL Server テーブルに ID 列を追加する必要があります。 既存の列を直接変更して ID にすることはサポートされていません。

解決策: これを実現するには 2 つの方法があります:

方法 1: 新しいテーブルを作成する

このメソッドは既存のデータを保存します。 ID 列を含む新しいテーブルが作成され、データがコピーされ、古いテーブルが置き換えられます。

T-SQL:

<code class="language-sql">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'</code>

方法 2: 新しい ID 列を追加する

このアプローチでは、新しい ID 列を追加し、古い主キーを削除して、新しい列の名前を変更します。 注: 元の主キー列の既存のデータは保持されません

T-SQL:

<code class="language-sql">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'</code>

重要な考慮事項:

  • バックアップ: スキーマの変更を実行する前に、必ずデータをバックアップしてください。
  • トランザクション: 原子性を確保するために、これらの操作をトランザクションにラップすることを検討してください。
  • テスト: これらの変更を実稼働環境に適用する前に、開発環境またはステージング環境で徹底的にテストします。
  • データ損失: 方法 2 では、元の主キー列のデータが失われます。 データ要件に基づいて適切な方法を選択してください。

この情報は、中心的な意味とイメージを維持しながら、元のテキストのより簡潔で合理的な説明を提供します。

以上がデータを含む既存の SQL Server テーブルに ID 列を追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。