テーブルの列を自動インクリメント列(自動採番列)に設定する - SQL Server

テーブルの列を自動インクリメント列(自動採番列)に設定する手順を紹介します。

概要

SQL Serverでテーブルの指定した列を自動でインクリメントする設定にする場合は、その列にIDENTITYの設定をして、「IDである」を「はい」に設定します。

Microsoft SQL Server Management Studio で設定する場合

[Microsoft SQL Server Management Studio]を起動します。テーブルを新規作成する。もしくは、テーブルを選択し、右クリックしてポップアップメニューを表示し、メニューの[構造]をクリックします。
下図のテーブルデザイナが表示されます。


テーブルデザイナで、自動インクリメントしたい列を選択します。下部の[列のプロパティ]エリアの"IDENTITYの指定"の(IDである)が"いいえ"になっていますので、"はい"に変更します。


"IDENTITYの指定"の(IDである)を"はい"に変更すると、"IDの増分","IDENTITY シード"が設定できるようになります。今回はデフォルトのままとしました。

SQLで設定する場合

IDENTITYの設定は、テーブルの作成時、または、テーブルへの列の追加時のみに設定可能です。

例: 列の追加時にIDENTITYを設定する

TestTableに自動インクリメントする"id2"列を追加する場合は、以下のSQLを実行します。
alter table TestTable add id2 int IDENTITY(1,1)

例: テーブルの作成時にIDENTITYを設定する

TestTable作成時に、"id"列を自動インクリメントする場合は、以下のSQLを実行します。(ID列で主キーの定義はしていません)
CREATE TABLE [dbo].[TestTable](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[name] [nchar](128) NULL,
	[category] [nchar](64) NULL,
	[price] [decimal](18, 0) NULL,
	[point] [decimal](18, 0) NULL
) ON [PRIMARY]

参考

主キーも設定する場合は、以下のSQLとなります。
CREATE TABLE [dbo].[TestTable](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[name] [nchar](128) NULL,
	[category] [nchar](64) NULL,
	[price] [decimal](18, 0) NULL,
	[point] [decimal](18, 0) NULL,
 CONSTRAINT [PK_TestTable] PRIMARY KEY CLUSTERED 
(
	[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
最終更新日: 2019-12-09
作成日: 2014-07-28
iPentec all rights reserverd.