【问题标题】:Database Creating table error [duplicate]数据库创建表错误[重复]
【发布时间】:2017-03-20 06:52:53
【问题描述】:

尝试创建表

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: 此列列表没有匹配的唯一键或主键

我做错了什么?

【问题讨论】:

    标签: sql oracle ddl


    【解决方案1】:

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

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

    此外,您可能应该在属性表之前创建客户端表,因为客户端可能拥有属性,但反之则不然。

    【讨论】:

    • 谢谢,是的,以其他方式添加它们有助于使属性具有外键而不是客户端
    • 很高兴我能帮上忙 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-11
    • 2012-01-11
    • 1970-01-01
    相关资源
    最近更新 更多