テーブル作成と既存テーブルへの追加、どっちが最適?SSMS 2012で自動増分主キーを設定する2つの方法
SQL Server Management Studio 2012 (SSMS) を使用して、テーブルに自動増分主キーを設定するには、以下の2つの方法があります。
- テーブルの作成時にIDENTITYプロパティを使用する
- 既存のテーブルにIDENTITY列を追加する
- SSMSで新しいテーブルを作成するクエリを作成します。
CREATE TABLE
ステートメントで、IDENTITY
プロパティを指定した列を定義します。
CREATE TABLE [dbo].[MyTable] (
[ID] INT IDENTITY(1,1) PRIMARY KEY,
[Name] VARCHAR(50) NOT NULL
);
上記の例では、ID
列は自動増分主キーとして定義されています。
IDENTITY(1,1)
は、最初の値が1で、1ずつ増分することを意味します。
- SSMSで既存のテーブルを開きます。
- デザインビューに切り替えます。
- 新しい列を追加し、データ型を
INT
に設定します。 - 列のプロパティを開き、
IDENTITY
プロパティをTrue
に設定します。 - プライマリキー制約を作成し、新しい列をキー列として選択します。
IDENTITYプロパティの詳細
IDENTITY
プロパティには、開始値と増分値を指定できます。- 開始値は、新しい行が挿入されたときに列に割り当てられる最初の値です。
- 増分値は、次の行に割り当てられる値を計算するために使用されます。
例
CREATE TABLE [dbo].[MyTable] (
[ID] INT IDENTITY(10,5) PRIMARY KEY,
[Name] VARCHAR(50) NOT NULL
);
注意事項
IDENTITY
プロパティは、int
データ型のみで使用できます。- 主キー列に
IDENTITY
プロパティを設定すると、その列は一意になることを保証されます。 - 一意の値を生成するために、
IDENTITY
プロパティとUNIQUE
制約を組み合わせて使用することはできません。
USE [MyDatabase]
GO
CREATE TABLE [dbo].[MyTable] (
[ID] INT IDENTITY(1,1) PRIMARY KEY,
[Name] VARCHAR(50) NOT NULL
);
GO
INSERT INTO [dbo].[MyTable] ([Name]) VALUES ('John Doe');
INSERT INTO [dbo].[MyTable] ([Name]) VALUES ('Jane Doe');
GO
SELECT * FROM [dbo].[MyTable];
USE [MyDatabase]
GO
ALTER TABLE [dbo].[MyTable] ADD [ID] INT IDENTITY(1,1) NOT NULL;
GO
ALTER TABLE [dbo].[MyTable] ADD CONSTRAINT [PK_MyTable] PRIMARY KEY ([ID]);
GO
INSERT INTO [dbo].[MyTable] ([Name]) VALUES ('John Doe');
INSERT INTO [dbo].[MyTable] ([Name]) VALUES ('Jane Doe');
GO
SELECT * FROM [dbo].[MyTable];
出力
ID | Name
------- | --------
1 | John Doe
2 | Jane Doe
説明
- 最初の例では、
MyTable
という名前のテーブルを作成し、ID
という名前の自動増分主キー列を追加しています。 - 両方の例で、
INSERT
ステートメントを使用してテーブルにデータが挿入されています。
補足
- 上記のコードは、SQL Server 2012 で実行できます。
- 他のバージョンの SQL Server を使用している場合は、構文が異なる場合があります。
SQL Server Management Studio 2012で自動増分主キーを設定する他の方法
方法3:テーブルデザイナーを使用する
- 主キーを設定したい列を選択します。
- ツールバーの「主キー」ボタンをクリックします。
- 「主キーのプロパティ」ダイアログボックスで、「自動的に生成される値を使用する」オプションを選択します。
- 必要に応じて、開始値と増分値を設定します。
- 「OK」をクリックします。
方法4:Transact-SQL ステートメントを使用する
- SSMSで新しいクエリウィンドウを開きます。
ALTER TABLE [dbo].[MyTable]
ADD CONSTRAINT [PK_MyTable] PRIMARY KEY ([ID])
WITH (IDENTITY(1,1));
上記の方法の比較
方法 | メリット | デメリット |
---|---|---|
テーブルの作成時にIDENTITYプロパティを使用する | シンプルで分かりやすい | テーブル作成時にしか使用できない |
既存のテーブルにIDENTITY列を追加する | 既存のテーブルにも適用できる | 少し複雑な操作が必要 |
テーブルデザイナーを使用する | GUI で操作できる | 詳細な設定ができない |
Transact-SQL ステートメントを使用する | 詳細な設定ができる | 複雑な操作が必要 |
- シンプルで分かりやすい方法を求めている場合は、方法1または方法3を選択するのがおすすめです。
- 既存のテーブルに自動増分主キーを設定したい場合は、方法2または方法4を選択する必要があります。
- 詳細な設定が必要な場合は、方法4を選択するのがおすすめです。
sql-server sql-server-2012 identity