主キーの作成Create Primary Keys

適用対象:Applies to: はいSQL Server 2016 (13.x)SQL Server 2016 (13.x)yesSQL Server 2016 (13.x)SQL Server 2016 (13.x) 以降 はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance適用対象:Applies to: はいSQL Server 2016 (13.x)SQL Server 2016 (13.x)yesSQL Server 2016 (13.x)SQL Server 2016 (13.x) and later はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance

SQL ServerSQL Server では、 SQL Server Management StudioSQL Server Management Studio または Transact-SQLTransact-SQLを使用して主キーを定義できます。You can define a primary key in SQL ServerSQL Server by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. 主キーを作成すると、指定に従って対応する一意なクラスター化または非クラスター化インデックスが自動的に作成されます。Creating a primary key automatically creates a corresponding unique clustered index, or a nonclustered index if specified as such.

はじめにBefore You Begin

制限事項と制約事項Limitations and Restrictions

  • テーブルに含めることができる PRIMARY KEY 制約は 1 つだけです。A table can contain only one PRIMARY KEY constraint.

  • PRIMARY KEY 制約中で定義する列はすべて、NOT NULL として定義する必要があります。All columns defined within a PRIMARY KEY constraint must be defined as NOT NULL. NULL 値を許容するかどうかを指定しない場合、PRIMARY KEY 制約の影響を受けるすべての列は NOT NULL に設定されます。If nullability is not specified, all columns participating in a PRIMARY KEY constraint have their nullability set to NOT NULL.

セキュリティSecurity

PermissionsPermissions

主キーが設定された、新しいテーブルを作成するには、データベースの CREATE TABLE 権限と、テーブルを作成するスキーマの ALTER 権限が必要です。Creating a new table with a primary key requires CREATE TABLE permission in the database and ALTER permission on the schema in which the table is being created.

既存のテーブルに主キーを作成するには、テーブルに対する ALTER 権限が必要です。Creating a primary key in an existing table requires ALTER permission on the table.

SQL Server Management Studio の使用Using SQL Server Management Studio

主キーを作成するにはTo create a primary key

  1. オブジェクト エクスプローラーで、UNIQUE 制約を追加するテーブルを右クリックし 、[デザイン] をクリックします。In Object Explorer, right-click the table to which you want to add a unique constraint, and click Design.
  2. テーブル デザイナーで、主キーとして定義するデータベース列の行セレクターをクリックします。In Table Designer, click the row selector for the database column you want to define as the primary key. 複数列を選択する場合は、Ctrl キーを押しながら、他の列の行セレクターをクリックします。If you want to select multiple columns, hold down the CTRL key while you click the row selectors for the other columns.
  3. 列の行セレクターを右クリックし、 [主キーの設定] をクリックします。Right-click the row selector for the column and select Set Primary Key.

注意事項

主キーを再定義する場合は、新しい主キーを作成する前に、既存の主キーに対するリレーションシップをすべて削除する必要があります。If you want to redefine the primary key, any relationships to the existing primary key must be deleted before the new primary key can be created. 再定義中に、既存のリレーションシップが自動的に削除されることを警告するメッセージが表示されます。A message will warn you that existing relationships will be automatically deleted as part of this process.

主キー列は、行セレクターに主キーの記号で示されます。A primary key column is identified by a primary key symbol in its row selector.

主キーが複数の列で構成される場合、1 つの列では重複した値が許可されますが、主キーのすべての列の値の組み合わせは一意である必要があります。If a primary key consists of more than one column, duplicate values are allowed in one column, but each combination of values from all the columns in the primary key must be unique.

複合キーを定義する場合は、主キーの列の順序が、テーブルに表示される列の順序と同じになります。If you define a compound key, the order of columns in the primary key matches the order of columns as shown in the table. ただし、主キー作成後に列の順序を変更することもできます。However, you can change the order of columns after the primary key is created. 詳細については、「 主キーの変更」を参照してください。For more information, see Modify Primary Keys.

Transact-SQL の使用Using Transact-SQL

既存のテーブルに主キーを作成するにはTo create a primary key in an existing table

次の例では、AdventureWorks データベースの列 TransactionID に主キーを作成します。The following example creates a primary key on the column TransactionID in the AdventureWorks database.

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

新しいテーブルに主キーを作成するにはTo create a primary key in a new table

次の例では、AdventureWorks データベース内で、テーブルを作成して列 TransactionID に主キーを定義します。The following example creates a table and defines a primary key on the column TransactionID in the AdventureWorks database.

CREATE TABLE Production.TransactionHistoryArchive1
   (
      TransactionID int IDENTITY (1,1) NOT NULL
      , CONSTRAINT PK_TransactionHistoryArchive_TransactionID PRIMARY KEY CLUSTERED (TransactionID)
   )
;

新しいテーブルにクラスター化インデックス付きの主キーを作成するにはTo create a primary key with clustered index in a new table

次の例では、AdventureWorks データベース内で、テーブルを作成して CustomerID 列に主キーを、TransactionID にクラスター化インデックスを定義します。The following example creates a table and defines a primary key on the column CustomerID and a clustered index on TransactionID in the AdventureWorks database.

-- Create table to add the clustered index
CREATE TABLE Production.TransactionHistoryArchive1
   (
      CustomerID uniqueidentifier DEFAULT NEWSEQUENTIALID()
      , TransactionID int IDENTITY (1,1) NOT NULL
      , CONSTRAINT PK_TransactionHistoryArchive1_CustomerID PRIMARY KEY NONCLUSTERED (CustomerID)
   )
;

-- Now add the clustered index
CREATE CLUSTERED INDEX CIX_TransactionID ON Production.TransactionHistoryArchive1 (TransactionID);

関連項目See Also