テーブル作成と既存テーブルへの追加、どっちが最適?SSMS 2012で自動増分主キーを設定する2つの方法

2024-04-02

SQL Server Management Studio 2012 (SSMS) を使用して、テーブルに自動増分主キーを設定するには、以下の2つの方法があります。

  1. テーブルの作成時にIDENTITYプロパティを使用する
  2. 既存のテーブルにIDENTITY列を追加する
  1. SSMSで新しいテーブルを作成するクエリを作成します。
  2. 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ずつ増分することを意味します。
  1. SSMSで既存のテーブルを開きます。
  2. デザインビューに切り替えます。
  3. 新しい列を追加し、データ型を INT に設定します。
  4. 列のプロパティを開き、IDENTITY プロパティを True に設定します。
  5. プライマリキー制約を作成し、新しい列をキー列として選択します。

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:テーブルデザイナーを使用する

  1. 主キーを設定したい列を選択します。
  2. ツールバーの「主キー」ボタンをクリックします。
  3. 「主キーのプロパティ」ダイアログボックスで、「自動的に生成される値を使用する」オプションを選択します。
  4. 必要に応じて、開始値と増分値を設定します。
  5. 「OK」をクリックします。

方法4:Transact-SQL ステートメントを使用する

  1. 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


sys.dm_exec_connections DMVを使用してIPアドレスを取得する

手順SQL Server Management Studio (SSMS) を起動し、SQL Serverインスタンスに接続します。以下のクエリを実行します。結果このクエリを実行すると、以下の列が表示されます。IPアドレス: クライアントのIPアドレス...


データベースの肥大化を防ぎ、パフォーマンスを向上させる!SQL Server 2005で眠っているオブジェクトを有効活用する方法

Microsoft SQL Server 2005 には、データベース内の使用されていないオブジェクトを識別するのに役立ついくつかのツールと手法があります。使用されていないオブジェクトを特定することで、データベースのパフォーマンスと管理を向上させることができます。...


SQL Server - OUTER 結合と INNER 結合を組み合わせる - サンプルコード

SQL Server では、OUTER 結合と INNER 結合を組み合わせて、より複雑なデータセットを取得することができます。OUTER 結合は、結合条件を満たす行だけでなく、満たさない行も含めて結果セットに含めます。INNER 結合は、結合条件を満たす行のみを結果セットに含めます。...


SQL Server の例外処理:THROW と RAISERROR の徹底比較

THROW キーワードを使用する同じ例外を再スローするには、THROW キーワードを使用します。 構文は以下の通りです。error_number は、再スローする例外のエラー番号です。message は、例外と共に再スローされるオプション メッセージです。...


【初心者向け】SQL Server接続:Trusted_ConnectionとIntegrated Securityを使い分ける方法

歴史的な経緯Trusted_Connection は、ODBC ドライバーで使用される古いキーワードです。Integrated Security は、OLE DB プロバイダーで導入された比較的新しく、より一般的なキーワードです。一般的には、Integrated Security を使用する方が推奨されています。これは、より新しいキーワードであり、ODBC と OLE DB の両方で使用できるためです。...


SQL SQL SQL SQL Amazon で見る



SQL Server 既存のテーブルに自動増分主キーを追加する方法

このチュートリアルでは、SQL Server で既存のテーブルに自動増分主キーを追加する方法を説明します。2つの方法を紹介します。方法 1: IDENTITY プロパティを使用するこの方法は、新しい列を追加し、その列に IDENTITY プロパティを設定することで、自動増分主キーを作成します。


SQL ServerでIDインクリメントがジャンプする問題を解決する方法

しかし、IDENTITY 機能を使用する場合、ID インクリメントのジャンプ という現象が発生することがあります。これは、ID 値が連続的に増加する代わりに、ある値から別の値に飛んでしまう現象です。ジャンプ現象には、主に以下の 2 つの原因が考えられます。