SQL Server 2008 R2があり、一意の列を設定したい。
これを行うには、「一意のインデックス」と「一意の制約」の2つの方法があるようです。インデックスは自動的に取得されるため、ほとんどの人が一意の制約を推奨していますが、これらは私が理解しているものと大差ありません。
一意の制約を作成するにはどうすればよいですか?
ALTER TABLE Customer ADD CONSTRAINT U_Name UNIQUE(Name)
SQL Server Management Studioを介して一意の制約を作成する方法はありますか?
GUIを使用してこれらの制約を作成するには、チェック制約のダイアログではなく、「インデックスとキー」ダイアログが必要です。
しかし、あなたの場合は、すでに持っているコードを実行するだけです。表現ダイアログに入力する必要はまったくありません。
GUIを使用して納屋を駆け巡ります。
開始する前に、列が一意性制約に違反していないことを確認してください。
alter table location_key drop constraint pinky;
alter table your_table add constraint pinky unique(yourcolumn);
変更はすぐに有効になります。
Command(s) completed successfully.
明確にカバーされていないことの1つは、Microsoft SQLが追加された制約の一意のインデックスをバックグラウンドで作成していることです
create table Customer ( id int primary key identity (1,1) , name nvarchar(128) )
--Commands completed successfully.
sp_help Customer
---> index
--index_name index_description index_keys
--PK__Customer__3213E83FCC4A1DFA clustered, unique, primary key located on PRIMARY id
---> constraint
--constraint_type constraint_name delete_action update_action status_enabled status_for_replication constraint_keys
--PRIMARY KEY (clustered) PK__Customer__3213E83FCC4A1DFA (n/a) (n/a) (n/a) (n/a) id
---- now adding the unique constraint
ALTER TABLE Customer ADD CONSTRAINT U_Name UNIQUE(Name)
-- Commands completed successfully.
sp_help Customer
---> index
---index_name index_description index_keys
---PK__Customer__3213E83FCC4A1DFA clustered, unique, primary key located on PRIMARY id
---U_Name nonclustered, unique, unique key located on PRIMARY name
---> constraint
---constraint_type constraint_name delete_action update_action status_enabled status_for_replication constraint_keys
---PRIMARY KEY (clustered) PK__Customer__3213E83FCC4A1DFA (n/a) (n/a) (n/a) (n/a) id
---UNIQUE (non-clustered) U_Name (n/a) (n/a) (n/a) (n/a) name
ご覧のとおり、新しい制約と新しいインデックスがあります_Name