回答:
SQLコマンドは次のとおりです。
ALTER TABLE <tablename> ADD CONSTRAINT
<constraintname> UNIQUE NONCLUSTERED
(
<columnname>
)
ここで完全な構文を参照してください。
データベースダイアグラムから実行する場合:
SQL Server Management Studio Expressの場合:
警告:一意になるように設定した列には、null行を1つだけ含めることができます。
SQL 2008のフィルターされたインデックスを使用してこれを行うことができます。
CREATE UNIQUE NONCLUSTERED INDEX idx_col1
ON dbo.MyTable(col1)
WHERE col1 IS NOT NULL;
回答の範囲でNULLでない限り、フィールド値は一意でなければならないを参照してください。
テーブルが既に作成されているときに1つまたは複数の列にUNIQUE制約を作成するには、次のSQLを使用します。
ALTER TABLE TableName ADd UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...)
上記のクエリのUNIQUE制約の命名を許可するには
ALTER TABLE TableName ADD CONSTRAINT un_constaint_name UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...)
MySQL / SQL Server / Oracle / MS Accessでサポートされるクエリ。
UNIQUE NONCLUSTERED
とオプション PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON
?
状況によっては、作成する前に一意のキーが存在しないことを確認することが望ましい場合があります。このような場合、以下のスクリプトが役立つ可能性があります。
IF Exists(SELECT * FROM sys.indexes WHERE name Like '<index_name>')
ALTER TABLE dbo.<target_table_name> DROP CONSTRAINT <index_name>
GO
ALTER TABLE dbo.<target_table_name> ADD CONSTRAINT <index_name> UNIQUE NONCLUSTERED (<col_1>, <col_2>, ..., <col_n>)
GO