UNIQUE 制約の作成

適用対象:SQL Server 2016 (13.x) 以降のデータベースAzure SQLAzure SQL Managed Instance

SQL Server では、SQL Server Management Studio または Transact-SQL を使用して UNIQUE 制約を作成し、主キー以外の特定の列に重複した値が入力されないようにします。 UNIQUE 制約を作成すると、対応する一意なインデックスが自動的に作成されます。

注意

Azure Synapse Analytics での一意制約の詳細については、Azure Synapse Analytics の主キー、外部キー、一意キーに関するページを参照してください。

Permissions

テーブルに対する ALTER 権限が必要です。

SQL Server Management Studio を使用します

UNIQUE 制約を作成するには

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

  2. [テーブル デザイナー] メニューの [インデックス/キー]を選択します。

  3. [インデックス/キー] ダイアログ ボックスで、 [追加] を選択します。

  4. [全般] の下のグリッドで [型] を選択し、プロパティの右にあるドロップダウン リスト ボックスの [一意キー] を選択して、 [閉じる] を選択します。

  5. [ファイル] メニューの [<テーブル名> を保存] を選びます。

Transact-SQL を使用する

UNIQUE 制約を作成するには

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

  2. 標準バーで、 [新しいクエリ] を選択します。

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] を選択します。 次の例では、 TransactionHistoryArchive4 テーブルを作成して TransactionID列に UNIQUE 制約を作成します。

    USE AdventureWorks2012;  
    GO  
    CREATE TABLE Production.TransactionHistoryArchive4  
     (  
       TransactionID int NOT NULL,   
       CONSTRAINT AK_TransactionID UNIQUE(TransactionID)   
    );   
    GO  
    
    

既存のテーブルに UNIQUE 制約を作成するには

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

  2. 標準バーで、 [新しいクエリ] を選択します。

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] を選択します。 次の例では、Person.Password テーブルの PasswordHash および PasswordSalt 列に UNIQUE 制約を作成します。

    USE AdventureWorks2012;   
    GO  
    ALTER TABLE Person.Password   
    ADD CONSTRAINT AK_Password UNIQUE (PasswordHash, PasswordSalt);   
    GO  
    
    

新しいテーブルに UNIQUE 制約を作成するには

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

  2. 標準バーで、 [新しいクエリ] を選択します。

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

    USE AdventureWorks2012;  
    GO  
    CREATE TABLE Production.TransactionHistoryArchive2  
    (  
       TransactionID int NOT NULL,  
       CONSTRAINT AK_TransactionID UNIQUE(TransactionID)  
    );  
    GO  
    

次の手順