2012-09-21 55 views
2

我想選擇我的表中的兩列,並使它們成爲unique,但我不知道如何在SQL Azure數據庫中執行此操作。正如你可以在下面的圖片中看到,它不顯示任何選項來修改表的屬性,所以一切都是使用SQL查詢來完成:
enter image description here如何在SQL Azure中創建兩個或更多唯一列?

下面是表的生成腳本:

USE [mydbase] 
GO 

SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

CREATE TABLE [dbo].[clientaccess](
    [ID] [bigint] IDENTITY(1,1) NOT NULL, 
    [ModuleName] [nvarchar](50) NOT NULL, 
    [ClientAuthenticationId] [bigint] NOT NULL, 
    [HasAccess] [bit] NOT NULL, 
CONSTRAINT [PK_clientaccess_ID] PRIMARY KEY CLUSTERED 
(
    [ID] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) 
) 

GO 

ALTER TABLE [dbo].[clientaccess] WITH CHECK ADD CONSTRAINT [CAI_caID] FOREIGN KEY([ClientAuthenticationId]) 
REFERENCES [dbo].[clientauthentication] ([ID]) 
GO 

ALTER TABLE [dbo].[clientaccess] CHECK CONSTRAINT [CAI_caID] 
GO 

這是我遇到的問題的預覽,它包含重複記錄:
enter image description here

希望有人理解我的解釋。

+0

你想使組合'(模塊名,ClientAuthenticationId)'? –

+0

是的,確切地說。 :-) – fiberOptics

+2

您可以使用ALTER TABLE添加唯一約束:'ALTER TABLE [dbo]。[clientaccess] ADD CONSTRAINT Module_Client_UQ UNIQUE(ModuleName,ClientAuthenticationId);' –

回答

7

有時GUIS有侷限性(或者沒有,但是你還沒有發現所有功能如何工作)。您可以隨時添加與ALTER TABLE一個唯一約束:2列獨特的

ALTER TABLE [dbo].[clientaccess] 
    ADD CONSTRAINT Module_Client_UQ    --- choose a name 
    UNIQUE (ModuleName, ClientAuthenticationId) ; 
+0

完美作品先生!謝謝! – fiberOptics

+0

「有時GUIS有侷限性......」這是因爲它是SQL Azure,在訪問SQL Azure數據庫時無法訪問Mgt Studio中的所有功能 –

+0

@Matt:Thnx。我沒有使用Azure,因此我不確定OP是否找不到方法或存在限制。 –

相關問題