主キーの作成

SQL Server 2012 では、SQL Server Management Studio または Transact-SQL を使用して主キーを定義できます。 主キーを作成すると、対応する一意なクラスター化または非クラスター化インデックスが自動的に作成されます。

このトピックの内容

  • 作業を開始する準備:

    制限事項と制約事項

    セキュリティ

  • 主キーを変更する方法:

    SQL Server Management Studio

    Transact-SQL

作業を開始する準備

制限事項と制約事項

  • テーブルに含めることができる PRIMARY KEY 制約は 1 つだけです。

  • PRIMARY KEY 制約中で定義する列はすべて、NOT NULL として定義する必要があります。 NULL 値を許容するかどうかを指定しない場合、PRIMARY KEY 制約の影響を受けるすべての列は NOT NULL に設定されます。

セキュリティ

権限

主キーが設定された、新しいテーブルを作成するには、データベースの CREATE TABLE 権限と、テーブルを作成するスキーマの ALTER 権限が必要です。

既存のテーブルに主キーを作成するには、テーブルに対する ALTER 権限が必要です。

[トップに戻る] リンクで使用される矢印アイコン[Top]

SQL Server Management Studio の使用

主キーを作成するには

  1. オブジェクト エクスプローラーで、UNIQUE 制約を追加するテーブルを右クリックし、[デザイン] をクリックします。

  2. テーブル デザイナーで、主キーとして定義するデータベース列の行セレクターをクリックします。 複数列を選択する場合は、Ctrl キーを押しながら、他の列の行セレクターをクリックします。

  3. 列の行セレクターを右クリックし、[主キーの設定] をクリックします。

注記注意

主キーを再定義する場合は、新しい主キーを作成する前に、既存の主キーに対するリレーションシップをすべて削除する必要があります。 再定義中に、既存のリレーションシップが自動的に削除されることを警告するメッセージが表示されます。

主キー列は、行セレクターに主キーの記号で示されます。

主キーが複数の列で構成される場合、1 つの列では重複した値が許可されますが、主キーのすべての列の値の組み合わせは一意である必要があります。

複合キーを定義する場合は、主キーの列の順序が、テーブルに表示される列の順序と同じになります。 ただし、主キー作成後に列の順序を変更することもできます。 詳細については、「主キーの変更」を参照してください。

[トップに戻る] リンクで使用される矢印アイコン[Top]

Transact-SQL の使用

既存のテーブルに主キーを作成するには

  1. オブジェクト エクスプローラーで、データベース エンジンのインスタンスに接続します。

  2. [標準] ツール バーの [新しいクエリ] をクリックします。

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、[実行] をクリックします。 この例では、TransactionID 列で主キーを作成します。

    USE AdventureWorks2012;
    GO
    ALTER TABLE Production.TransactionHistoryArchive 
    ADD CONSTRAINT PK_TransactionHistoryArchive_TransactionID PRIMARY KEY CLUSTERED (TransactionID);
    GO
    

新しいテーブルに主キーを作成するには

  1. オブジェクト エクスプローラーで、データベース エンジンのインスタンスに接続します。

  2. [標準] ツール バーの [新しいクエリ] をクリックします。

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、[実行] をクリックします。 次の例では、テーブルを作成して TransactionID 列に主キーを定義します。

    USE AdventureWorks2012;
    GO
    CREATE TABLE Production.TransactionHistoryArchive1
    (
       TransactionID int NOT NULL,
       CONSTRAINT PK_TransactionHistoryArchive_TransactionID PRIMARY KEY CLUSTERED (TransactionID)
    );
    GO
    

    詳細については、「ALTER TABLE (Transact-SQL)」、「CREATE TABLE (Transact-SQL)」、および「table_constraint (Transact-SQL)」を参照してください。

[トップに戻る] リンクで使用される矢印アイコン[Top]