web-dev-qa-db-ja.com

varchar(50)列を一意にする

SQL Serverデータベースにデータ型としてvarchar(50)を持つ列(電子メールを表す)があり、それを一意にしたい(同じ2つの電子メールアドレスを許可しない)。 SQL Server ManagementStudioでそのような列を一意にする方法が見つかりません。

どうやってするか?

21
Tomas

T-SQLでは次のようになります

ALTER  TABLE  MyTable WITH CHECK 
   ADD CONSTRAINT UQ_MyTable_Email UNIQUE (EmailAddress)

または明示的なインデックスとして

CREATE  UNIQUE INDEX IXU_Email ON MyTable (EmailAddress)

編集:SSMS GUIで制約を作成する方法がわかりません:他の回答はインデックスの管理方法を示しています。私はSQLのみを使用していますが、この種の作業にはGUIを使用していません

34
gbn

表の下のObject Explorerで、Indexesフォルダーを右クリックし、New Index...を選択します。

表示されるウィンドウでIndex name:と入力し、Uniqueチェックボックスをオンにして、Add...ボタンからメールフィールドを追加し、[OK]をクリックします。

6
Barry Kaye

これを試して:

ALTER TABLE [dbo].[TableName] ADD CONSTRAINT UNQ__TableName__ColumnName UNIQUE ([ColumnName])

これから:

http://msdn.Microsoft.com/en-us/library/ms191166.aspx

1
Nonym