MySQL的。同一领域的UNIQUE和PRIMARY KEY约束

时间:2016-11-23 13:56:41

标签: mysql constraints primary-key unique-constraint

我找到了一些遗留代码,它为主键字段设置了两个几乎相同的约束(PRIMARY KEYCREATE TABLE foofoo ( id NUMERIC(9) NOT NULL , bar VARCHAR(40) NOT NULL, CONSTRAINT PK_foofoo PRIMARY KEY (id), CONSTRAINT UNIQUE_foofoo UNIQUE(id) ) )。

以下是代码示例:

PRIMARY KEY

我认为拥有这两套并IWebElement element = driver.find_element_by_xpath("// put your xpath here")); 可以完成这项任务是多余的。

当然,我读到了这两个约束之间的区别,但是

为同一字段设置这两个约束的重点是什么

4 个答案:

答案 0 :(得分:2)

没有必要这样做。主键本质上总是唯一的。我建议不要制作两个索引,因为索引带有成本(主要是磁盘空间)。只需创建PK,你就会好起来!

答案 1 :(得分:1)

设置与PK完全相同的约束没有意义。

主键已经确保此列是唯一的并已编制索引。

答案 2 :(得分:1)

  

我认为这是多余的......

是的,它确实是多余的;因为在列上具有主键约束将确保该列仅具有唯一值。在同一列上定义额外的UNIQUE约束是没有意义的。

答案 3 :(得分:1)

当您声明主要时,然后: * PRIMARY KEY约束唯一标识数据库表中的每条记录 *主键必须包含UNIQUE值 所以他们不需要声明主键唯一,因为每当你声明任何主键时,UNIQUE值就已经附加了它们。 对于唯一键: * UNIQUE约束唯一标识数据库表中的每条记录。 * UNIQUE和PRIMARY KEY约束都为一列或一组列的唯一性提供了保证。 * PRIMARY KEY约束自动在其上定义UNIQUE约束。 最重要的一点是 *请注意,每个表可以有许多UNIQUE约束,但每个表只有一个PRIMARY KEY约束。 在mysql中,当我把它作为主键和唯一时,它给了我错误