Description
フィールドを持つテーブルがあります。 2つの行に同じ「説明」がないことを確認したいのですが、説明をID列に入れることができません(ID列はintです)。
Description
を(すでに主キーである私のIDに加えて)2番目の主キーとして設定しても安全ですか?
[説明]列に一意のインデックスを追加します。
Sql Server Management Studioを使用して、テーブルを右クリックし、[デザイン]を選択します。次に、列を右クリックして「インデックス/キー」を選択します。次のウィンドウが表示されます
左下の[追加]をクリックして、インデックスのプロパティを指定します。 DDLスクリプトを使用する場合は、次のようなものを使用してください
CREATE UNIQUE NONCLUSTERED INDEX [IX_INDEXNAME] ON [dbo].[TABLENAME]
(
[Description] ASC
)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
「二次主キー」のようなものはありません。テーブルごとに1つの主キーがあります。
Description
列に NIQUE制約 を作成します(非常に珍しいことですが、ところで。たとえば、Product Name
に一意のインデックスを作成するのが一般的です。 Product description
)またはDescription
列にnull値がある場合は、 フィルター処理されたインデックス (SQL Server 2008以降)を作成します。
ALTER TABLE dbo.yourTable
ADD CONSTRAINT UQ_yourTable_Description UNIQUE ([Description]);
必要に応じて、SSMSGUIを使用してこれを行う別の方法があります。
例のために、Description
列をMyUniqueColumn
という名前に置き換えました。
ADD CONSTRAINT
SQLスクリプトはそうします。