主キーの作成
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 の使用
主キーを作成するには
オブジェクト エクスプローラーで、UNIQUE 制約を追加するテーブルを右クリックし、[デザイン] をクリックします。
テーブル デザイナーで、主キーとして定義するデータベース列の行セレクターをクリックします。 複数列を選択する場合は、Ctrl キーを押しながら、他の列の行セレクターをクリックします。
列の行セレクターを右クリックし、[主キーの設定] をクリックします。
注意 |
---|
主キーを再定義する場合は、新しい主キーを作成する前に、既存の主キーに対するリレーションシップをすべて削除する必要があります。 再定義中に、既存のリレーションシップが自動的に削除されることを警告するメッセージが表示されます。 |
主キー列は、行セレクターに主キーの記号で示されます。
主キーが複数の列で構成される場合、1 つの列では重複した値が許可されますが、主キーのすべての列の値の組み合わせは一意である必要があります。
複合キーを定義する場合は、主キーの列の順序が、テーブルに表示される列の順序と同じになります。 ただし、主キー作成後に列の順序を変更することもできます。 詳細については、「主キーの変更」を参照してください。
[Top]
Transact-SQL の使用
既存のテーブルに主キーを作成するには
オブジェクト エクスプローラーで、データベース エンジンのインスタンスに接続します。
[標準] ツール バーの [新しいクエリ] をクリックします。
次の例をコピーしてクエリ ウィンドウに貼り付け、[実行] をクリックします。 この例では、TransactionID 列で主キーを作成します。
USE AdventureWorks2012; GO ALTER TABLE Production.TransactionHistoryArchive ADD CONSTRAINT PK_TransactionHistoryArchive_TransactionID PRIMARY KEY CLUSTERED (TransactionID); GO
新しいテーブルに主キーを作成するには
オブジェクト エクスプローラーで、データベース エンジンのインスタンスに接続します。
[標準] ツール バーの [新しいクエリ] をクリックします。
次の例をコピーしてクエリ ウィンドウに貼り付け、[実行] をクリックします。 次の例では、テーブルを作成して 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]