UNIQUE 制約の作成
適用対象:SQL Server 2016 (13.x) 以降
のデータベースAzure SQL
Azure 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 制約を作成するには
オブジェクト エクスプローラーで、UNIQUE 制約を追加するテーブルを右クリックし、 [デザイン] を選択します。
[テーブル デザイナー] メニューの [インデックス/キー]を選択します。
[インデックス/キー] ダイアログ ボックスで、 [追加] を選択します。
[全般] の下のグリッドで [型] を選択し、プロパティの右にあるドロップダウン リスト ボックスの [一意キー] を選択して、 [閉じる] を選択します。
[ファイル] メニューの [<テーブル名> を保存]テーブル名> を選びます。
Transact-SQL を使用する
UNIQUE 制約を作成するには
オブジェクト エクスプローラーで、 データベース エンジンのインスタンスに接続します。
標準バーで、 [新しいクエリ] を選択します。
次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] を選択します。 次の例では、
TransactionHistoryArchive4
テーブルを作成してTransactionID
列に UNIQUE 制約を作成します。USE AdventureWorks2012; GO CREATE TABLE Production.TransactionHistoryArchive4 ( TransactionID int NOT NULL, CONSTRAINT AK_TransactionID UNIQUE(TransactionID) ); GO
既存のテーブルに UNIQUE 制約を作成するには
オブジェクト エクスプローラーで、 データベース エンジンのインスタンスに接続します。
標準バーで、 [新しいクエリ] を選択します。
次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] を選択します。 次の例では、
Person.Password
テーブルのPasswordHash
およびPasswordSalt
列に UNIQUE 制約を作成します。USE AdventureWorks2012; GO ALTER TABLE Person.Password ADD CONSTRAINT AK_Password UNIQUE (PasswordHash, PasswordSalt); GO
新しいテーブルに UNIQUE 制約を作成するには
オブジェクト エクスプローラーで、 データベース エンジンのインスタンスに接続します。
標準バーで、 [新しいクエリ] を選択します。
次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] を選択します。 次の例では、テーブルを作成して
TransactionID
列に UNIQUE 制約を定義します。USE AdventureWorks2012; GO CREATE TABLE Production.TransactionHistoryArchive2 ( TransactionID int NOT NULL, CONSTRAINT AK_TransactionID UNIQUE(TransactionID) ); GO