SQL Server 既存のテーブルに自動増分主キーを追加する方法
SQL Server で既存のテーブルに自動増分主キーを追加する
このチュートリアルでは、SQL Server で既存のテーブルに自動増分主キーを追加する方法を説明します。2つの方法を紹介します。
方法 1: IDENTITY プロパティを使用する
この方法は、新しい列を追加し、その列に IDENTITY
プロパティを設定することで、自動増分主キーを作成します。
手順
- SQL Server Management Studio を開き、データベースに接続します。
- 変更するテーブルを右クリックし、「デザイン」を選択します。
- テーブルデザイナーで、新しい列を追加します。
- 新しい列の名前を
ID
などに変更します。 - データ型を
int
など、数値型に設定します。 - IDENTITY プロパティを True に設定します。
- 保存 をクリックします。
例
ALTER TABLE dbo.MyTable
ADD ID INT IDENTITY(1,1) PRIMARY KEY;
方法 2: ALTER TABLE ステートメントを使用する
- 次のクエリを実行します。
ALTER TABLE dbo.MyTable
ALTER COLUMN ID INT IDENTITY(1,1)
PRIMARY KEY;
ALTER TABLE dbo.MyTable
ALTER COLUMN ID INT IDENTITY(1,1)
PRIMARY KEY;
注意事項
- いずれの方法も、テーブルにデータが既に存在する場合は、
IDENTITY
プロパティの開始値を調整する必要があります。 IDENTITY
プロパティの(1,1)
は、最初の値が 1 で、増分値が 1 であることを意味します。必要に応じて変更できます。- 主キーは、テーブル内のすべての行を一意に識別する必要があります。
追加情報
- SQL Server 2008 では、
IDENTITY
プロパティはIDENTITY(n,m)
の形式で指定されます。n
は最初の値m
は増分値
USE MyDatabase;
ALTER TABLE dbo.MyTable
ADD ID INT IDENTITY(1,1) PRIMARY KEY;
USE MyDatabase;
ALTER TABLE dbo.MyTable
ALTER COLUMN ID INT IDENTITY(1,1)
PRIMARY KEY;
説明
上記のコードは、MyDatabase
データベースの MyTable
テーブルに、ID
という名前の自動増分主キーを追加します。
PRIMARY KEY
は、ID
列が主キーであることを指定します。
実行方法
- 上記のコードをクエリ エディターに貼り付けます。
他の方法
DEFAULT 制約を使用する
ALTER TABLE dbo.MyTable
ADD ID INT DEFAULT (NEXT VALUE FOR MySequence) PRIMARY KEY;
上記のコードは、MySequence
というシーケンスを使用して、ID
列に自動増分値を生成します。
- シーケンスは、一意の値を生成するために使用されるデータベース オブジェクトです。
NEXT VALUE FOR MySequence
は、シーケンスから次の値を取得することを意味します。
- シーケンスは事前に作成しておく必要があります。
トリガーを使用する
CREATE TRIGGER MyTrigger ON dbo.MyTable
FOR INSERT
AS
BEGIN
SET @ID = NEXT VALUE FOR MySequence;
UPDATE dbo.MyTable
SET ID = @ID
WHERE ID IS NULL;
END;
上記のコードは、MyTable
テーブルに新しい行が挿入されるたびに、ID
列に自動増分値を生成するトリガーを作成します。
- トリガーは、特定のイベントが発生したときに実行されるデータベース オブジェクトです。
UPDATE
ステートメントは、ID
列が NULL の行のID
列を更新します。
- トリガーは複雑になる可能性があるため、注意が必要です。
CLR プロパティを使用する
.NET Framework を使用して、CLR プロパティを作成することもできます。
既存のテーブルに自動増分主キーを追加するには、いくつかの方法があります。どの方法を使用するかは、要件と環境によって異なります。
sql-server sql-server-2008 primary-key