如何在SQL Azure中创建两个或多个唯一列?

时间:2012-09-21 05:48:39

标签: sql azure unique

我想在我的表中选择两列并使它们unique,但我不知道如何在SQL Azure数据库中执行此操作。正如您在下图中所看到的,它没有显示任何修改表属性的选项,因此所有操作都是使用sql查询完成的:
enter image description here

以下是表格的生成脚本:

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

希望有人理解我的解释。

1 个答案:

答案 0 :(得分:7)

有时候GUIS有局限性(或者没有,但你还没有发现所有功能如何运作)。您始终可以使用ALTER TABLE添加唯一约束:

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