13

我对 SQL Server 完全陌生,我使用的是 2012 版。

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

Attendance
--------------
TagID     (FK)
SessionID (FK)       
ScanningTime

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

我不知道该怎么做。我创建了一个查询并尝试了以下代码:

ALTER TABLE Attendance ADD CONSTRAINT UNIQUE NONCLUSTERED
(
    TagID,
    SessionID
)

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

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

使用 SSMS 更改表的正确方法是什么?每次我想创建一个查询时都应该这样做吗?

4

2 回答 2

11

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

ALTER TABLE Attendance ADD CONSTRAINT UQ_TagID_SessionID UNIQUE NONCLUSTERED
(
    TagID,
    SessionID
)

或者,

ALTER TABLE Attendance ADD UNIQUE NONCLUSTERED
(
    TagID,
    SessionID
)

也可以,但是约束是自动命名的

于 2013-08-14T14:12:22.280 回答
10

如果您更喜欢通过 GUI 而不是通过ALTER语句来执行此操作,您也可以在对象资源管理器中右键单击表,选择Design,然后右键单击空白背景上的某个位置,然后选择Indexes/Keys。这将打开一个对话框,您可以在其中选择“唯一键”作为类型。

通过 GUI 进行更改是您很少执行的操作的一种快速方法,因此不确定语法。

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

于 2013-08-14T14:22:01.340 回答