当数据库表中存在主键和唯一键时会出现什么样的错误?

时间:2013-07-09 13:32:43

标签: mysql sql database oracle

当数据库表中存在主键和唯一键时会出现什么样的错误? 我想知道主键和唯一键是两个不同的东西吗? 实际上这个问题在接受采访时被问到了我。

3 个答案:

答案 0 :(得分:2)

我的猜测是,访问者所指的“异常”来自关系数据库的规范化规则。你可以找到很多地方的规则,包括Wikipedia,但我敢打赌他说的是“插入异常”,“删除异常”和“更新异常”。

假设,如果您只使用唯一键而不是主键更新记录,则可能会发生更新异常(因为其他表中可能有更多记录)。我不确定,但如果你查看这些规则,你可能会有更好的答案。

答案 1 :(得分:0)

当然两者都不同。

主键唯一地定义表的每一行。它不能为空。并且只能有一个主键(可能是简单的或复合的)。

唯一键表明该列必须包含唯一值。它可能包含null。可以有尽可能多的具有唯一键约束的列。

主键=唯一键+许多其他约束。

希望你明白。

答案 2 :(得分:0)

主键唯一键,其中添加的约束是键不能为NULL。从设计的角度来看,主键用于识别表中的行。其他唯一键只是“附加为唯一”但不应该用于“识别”一行(并且只允许不能)。

现在,当一张桌子上有两把钥匙时,谈到“异常”,那么......更有问题?!? 事实上,这是一个很常见的情况。也许问题是关于主键查询与使用唯一键查询之间的“差异” - 因为在后一种情况下可能(多行具有)空值?