【发布时间】:2015-11-05 10:21:27
【问题描述】:
试图理解约束。 这个article 说
Oracle 不允许您同时创建主键和唯一键 具有相同列的约束。
后面是一个例子:
CREATE TABLE supplier
( supplier_id numeric(10) NOT NULL,
supplier_name varchar2(50) NOT NULL,
contact_name varchar2(50),
CONSTRAINT supplier_unique UNIQUE (supplier_id)
);
我是否正确理解创建的supplier_id 不能是主键?
另外,为什么不允许?因为主键在定义上是唯一的,并且仅仅对该列施加约束是没有意义的?
【问题讨论】:
-
我想我在这里找到了第二个问题的答案:stackoverflow.com/questions/7224505/…
-
因为它也不会让您创建具有相同列的两个索引
-
这也可能是外键可能违反 PK 或唯一约束的一个因素,因此同时拥有两者会有点模棱两可 - 特别是如果您随后尝试删除其中一个? (FK 的 search_condition 列可能必须更改为指向另一个约束,并且它必须在删除之前寻找其他约束,这使得一切变得更加复杂......)
标签: sql oracle unique-constraint