2008-09-15 163 views
178

如何在SQL Server 2005中的現有表上創建唯一約束?SQL Server 2005如何創建唯一約束?

我正在尋找TSQL以及如何在數據庫圖中執行此操作。

+0

此鏈接可能會幫助你http://www.codefari.com/2014/10/unique-key-constraint-in-sql-server.html – Singh 2016-06-26 16:07:02

回答

270

的SQL命令是:

ALTER TABLE <tablename> ADD CONSTRAINT 
      <constraintname> UNIQUE NONCLUSTERED 
    (
       <columnname> 
    ) 

查看完整的語法here

如果你想從一個數據庫圖表做到這一點:

  • 在桌子上單擊鼠標右鍵,選擇「索引/鍵」
  • 單擊Add按鈕,添加一個新的索引
  • 進入在屬性所需的信息在右手邊:
    • 你想要的列(單擊省略號按鈕來選擇)
    • 集是唯一的是
    • 給它一個合適的名字
+0

它的工作原理......但......爲什麼約束是在INDEX文件夾下顯示,而不是CONSTRAINTS文件夾。它與另一個圖標一起顯示,但無論如何它應該位於約束文件夾中。 – 2016-02-19 13:36:38

13
ALTER TABLE dbo.<tablename> ADD CONSTRAINT 
      <namingconventionconstraint> UNIQUE NONCLUSTERED 
    (
       <columnname> 
    ) ON [PRIMARY] 
8

您正在尋找的東西像下面

ALTER TABLE dbo.doc_exz 
ADD CONSTRAINT col_b_def 
UNIQUE column_b 

MSDN Docs

5

在管理工作室圖選擇表,如果需要右鍵點擊添加新列,上單擊鼠標右鍵列並選擇「檢查約束」,在那裏你可以添加一個。

10

我還發現你可以通過數據庫圖來做到這一點。

通過右鍵單擊表並選擇索引/鍵...

點擊「添加」按鈕,並更改列到你想要做唯一的列(S)。

更改對於是唯一的。

點擊關閉並保存圖表,並將它添加到表格中。

27
ALTER TABLE [TableName] ADD CONSTRAINT [constraintName] UNIQUE ([columns]) 
15

警告:只有一個空行可以在你設置是唯一的列。

可以在SQL 2008與過濾指數做到這一點:

CREATE UNIQUE NONCLUSTERED INDEX idx_col1 
ON dbo.MyTable(col1) 
WHERE col1 IS NOT NULL; 

爲一系列的答案見Field value must be unique unless it is NULL

+0

你如何在sql server 2005中做到這一點? – Maxrunner 2015-05-26 19:14:11

+2

在sql server 2005中無法實現。我強烈建議升級到更新的RDBMS - 它將[官方不受支持](http://blogs.msdn.com/b/sqlreleaseservices/archive/2011/ 01/27/end-of-the-main-support-for-sql-server-2005-end-of-service-pack-support-for-sql-server-2008-sp1.aspx)截至2016年4月12日。 – reedstonefood 2015-06-24 13:26:33

84

在SQL Server Management Studio Express的:

  • 右鍵單擊表,選擇修改設計(更高版本)
  • 右鍵單擊字段中,選擇索引/鍵.. 。
  • 點擊添加
  • 對於,選擇字段名稱您想要是唯一的。
  • 對於類型,請選擇唯一密鑰
  • 點擊進入關閉,保存表格。
6

要創建一個或多個列的唯一性約束已創建表時,請使用以下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支持的查詢。