我找到了一些遗留代码,它为主键字段设置了两个几乎相同的约束(PRIMARY KEY
和CREATE 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"));
可以完成这项任务是多余的。
当然,我读到了这两个约束之间的区别,但是
为同一字段设置这两个约束的重点是什么?
答案 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中,当我把它作为主键和唯一时,它给了我错误