UNIQUE 制約の作成

適用対象: SQL Server 2016 (13.x) 以降 Azure SQL DatabaseAzure SQL Managed Instance

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

Note

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

アクセス許可

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

SQL Server Management Studio (SSMS) の使用

SSMS を使用して一意性制約を作成する方法

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

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

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

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

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

Transact-SQL を使用する

Transact-SQL を使用して一意性制約を作成する方法

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

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

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

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

既存のテーブルに一意性制約を作成する

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

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

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

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

新しいテーブルに一意性制約を作成する

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

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

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

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

null 許容列に一意制約を作成する

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

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

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] を選択します。 この例では、 CREATE UNIQUE INDEX構文を使用してフィルター処理された一意制約を作成し、NULL以外の値に対してのみ一意性を適用します。

    USE AdventureWorks2022;  
    GO
    CREATE UNIQUE INDEX UQ_AdventureWorksDWBuildVersion
    ON dbo.AdventureWorksDWBuildVersion (DBVersion)
    WHERE (DBVersion IS NOT NULL);
    GO