在MySQL Workbench EER图中创建多个列的唯一约束条件

50
在MySQL Workbench的EER图中,有一个复选框可以使表中的每个列唯一、非空、主键等。
但是,我想在多个列上添加UNIQUE约束。是否可以在MySQL Workbench的EER图中添加它?
编辑:好的,我意识到唯一复选框会创建一个唯一索引,而不是一个唯一约束。
3个回答

126

在MySQL Workbench的修改表对话框中:

  • 转到索引选项卡。
  • 双击空白行以创建新索引。
  • 选择“UNIQUE”作为索引类型。
  • 勾选您想要一起唯一的列。

关于这是否奇怪,因为索引与约束不同,存在一些讨论。但是,显然,“唯一索引”以与唯一约束相同的方式强制执行唯一性,并且可能会提高性能。例如,如果我尝试插入在使用此方法后会破坏唯一性的行,则会抛出“1062重复条目”错误。


1
我在创建新索引后是否应该删除其他索引? - Ahmad Alkhatib

2

最新的MWB(我使用的是6.0.8版本),可以创建复合键

如果您想创建一个复合主键,您可以选择多个列并勾选PK复选框。但是,还需要执行另一个步骤,您必须单击索引选项卡,然后在索引列面板中设置所需的主键顺序。


2

看起来似乎不可用:http://bugs.mysql.com/bug.php?id=48468。在索引选项卡上,您可以创建多列唯一索引,但对于多列唯一约束,您需要手动运行创建命令。


谢谢你的回答,他们真的应该实现它。当你有多个带有多列唯一约束的表时,这会非常麻烦。 - zhenming
实际上,如果您查看该线程的末尾,它会说多列唯一索引可以正确地强制执行唯一性约束。 - Alex
1
是的,它可以,但问题是能否从工作台创建约束而不是索引。虽然可以从命令行创建,但无法从工作台创建。 - user890904
一个相当啰嗦的解释,关于何时应该使用唯一约束而不是唯一索引。 - quickshiftin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接