数据库创建表错误

时间:2017-03-19 21:08:37

标签: sql oracle ddl

尝试创建表

create table Properties(pID number, pAddress varchar(60) not null, oID
 number not null, cID number, Primary Key(pID, oID, cID),leaseExp varchar(16));

创建表

但是当我运行下一个命令时,我收到以下错误。

create table Client(cID number, cName varchar(16), mRent number(8,2), 
 Primary Key(cID, cName), Foreign Key(cID) references Properties(cID));

第1行的错误: ORA-02270:此列列表没有匹配的唯一键或主键

我做错了什么?

1 个答案:

答案 0 :(得分:1)

我认为这是因为您将属性中的cId引用为客户端中的外键,这不是唯一的或属性的主键。它是主键的一部分,但该主键中还有另外两列。因此,Client表中的外键可以引用Properties表中的多个记录。

理想情况下,属性应该具有引用Client表的cId的外键,因为cId将是(我假设)每个客户端的唯一ID。此外,您可能希望指定cId在客户端表中必须是唯一的,因为我假设每个客户端都有一个唯一的cId。如果没有这个,您将无法从Properties表中的Client表中引用cId的外键。

此外,您可能应该在Properties表之前创建Client表,因为Clients可能拥有Properties,但反之亦然。