如何在 SSMS 2012 中创建唯一约束 [重复]

Posted

技术标签:

【中文标题】如何在 SSMS 2012 中创建唯一约束 [重复]【英文标题】:How to create UNIQUE constraint in SSMS 2012 [duplicate] 【发布时间】:2013-08-14 14:10:29 【问题描述】:

我是 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 更改表的正确方法是什么?我应该每次都创建一个查询吗?

【问题讨论】:

【参考方案1】:

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

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

或者

ALTER TABLE Attendance ADD UNIQUE NONCLUSTERED
(
    TagID,
    SessionID
)

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

【讨论】:

谢谢,你也可以用粗体字回答我的问题吗? 我强烈建议命名约束 - 第一个选项。 @jaspernorth - RE:您的大胆问题我的偏好通常是避免设计器并使用 TSQL,但也可以通过 indexes and keys dialogue 在 SSMS 中直观地执行此操作。 感谢您的帮助!【参考方案2】:

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

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

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

【讨论】:

这很有帮助。感谢您的帮助先生! 关闭该对话框后,约束不会立即创建,而只会在您保存/关闭表设计器时创建。因此,您可以在空白背景上再次右键单击并选择“生成更改脚本...”选项。 @NenadZivkovic 你的评论真的很有帮助;)。添加约束后我没想到点击保存

以上是关于如何在 SSMS 2012 中创建唯一约束 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何从列表中创建唯一的非重复对组合

Doctrine 2,Symfony 2 中的独特约束

IntegrityError:重复键值违反唯一约束

怎样在oracle中创建主外键和唯一约束

SQL Server Management Studio 2012在哪里?

如何在c#neo4jClient中创建一个唯一节点(如果已经存在则不重复)?