如何在SSMS 2012中创建UNIQUE约束

jas*_*rth 11 sql database sql-server ssms sql-server-2012

我是SQL Server的新手,我使用的是2012版.

我有一个具有以下结构的表:

Attendance
--------------
TagID     (FK)
SessionID (FK)       
ScanningTime
Run Code Online (Sandbox Code Playgroud)

我需要基于两列(TagIDSessionID)创建一个唯一约束

我不知道该怎么做.我创建了一个查询并尝试了这段代码:

ALTER TABLE Attendance ADD CONSTRAINT UNIQUE NONCLUSTERED
(
    TagID,
    SessionID
)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试执行它时,我收到此错误:

消息156,级别15,状态1,行2
关键字"UNIQUE"附近的语法不正确.

使用SSMS更改表格的正确方法是什么?我应该每次创建一个查询吗?

Mar*_*ith 10

你快到了.如果您使用constraint关键字,则需要提供名称.

ALTER TABLE Attendance ADD CONSTRAINT UQ_TagID_SessionID UNIQUE NONCLUSTERED
(
    TagID,
    SessionID
)
Run Code Online (Sandbox Code Playgroud)

或者

ALTER TABLE Attendance ADD UNIQUE NONCLUSTERED
(
    TagID,
    SessionID
)
Run Code Online (Sandbox Code Playgroud)

也有效,但约束是自动命名的


Fra*_*kPl 8

如果您更喜欢通过GUI而不是via ALTER语句来执行此操作,您还可以右键单击对象资源管理器中的表,选择"设计",然后右键单击空白背景上的某个位置,并选择"索引/键".这将打开一个对话框,您可以选择""唯一键"作为类型.

通过GUI进行更改是您很少采取行动的快速方法,因此无法确定语法.

许多Management Studio对话框 - 但不是这个,可能是因为它是表设计器对话框的子对话框 - 左上角有一个"脚本"按钮,它将您通过GUI配置的操作写入查询窗口,以便您如果您需要类似的操作,可以保存它们以用于将来的similr任务,或者复制和粘贴它们.

  • 关闭该对话框后,不会立即创建约束,而只会在保存/关闭表设计器时创建约束.因此,您可以再次右键单击空白背景并选择"生成更改脚本..."选项. (3认同)