簡體   English   中英

如何強制 SQL Server 2008 R2 中的整個表的列唯一?

[英]How can I force a column to be unique for an entire table in SQL Server 2008 R2?

我有一個帶有Description字段的表。 我想確保沒有兩行具有相同的“描述”,但我無法將描述放入我的身份列(我的 ID 列是一個整數)。

Description設置為第二個主鍵是否安全(除了我已經是主鍵的 ID 之外)?

沒有“輔助主鍵”這樣的東西。 每張表有一個主鍵。

Description列上創建一個UNIQUE 約束(非常不尋常的事情,順便說一句。例如,在Product Name上創建唯一索引而不是Product description更常見),或者如果您在Description列中有空值,則創建一個篩選索引(SQL Server 2008 及更高版本)

ALTER TABLE dbo.yourTable
   ADD CONSTRAINT UQ_yourTable_Description UNIQUE ([Description]);

向描述列添加唯一索引。

使用 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

如果您願意,還有另一種使用 SSMS GUI 執行此操作的方法:

為了示例起見,我已將Description列替換為名稱MyUniqueColumn

  1. 右鍵單擊 SSMS 解決方案資源管理器中表下的“索引”,然后單擊“新建索引...”(我知道您要創建約束,而不是索引,但這正是ADD CONSTRAINT SQL 腳本所做的。

在此處輸入圖片說明

  1. 為新索引命名(例如“UQ_MyUniqueColumn”),選中“唯一”,然后單擊“添加...”

在此處輸入圖片說明

  1. 在下一個窗口中檢查您的列

在此處輸入圖片說明

  1. 在兩個窗口中單擊確定

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM