【问题标题】:Integrity Constraint Invalid Identifier SQL完整性约束无效标识符 SQL
【发布时间】:2013-11-27 16:19:29
【问题描述】:

我是 SQL 新手,我目前遇到了一个问题,即我试图在我的一个列上放置一个约束。

我的数据库为艺术画廊建模,画作可以在画廊中,也可以借给另一个画廊。显然它不能两者兼而有之,所以我试图在创建 on_loan 表时对其施加约束,以阻止我的 on_loan 表的绘画 ID (P_id) 与我的 in_gallery 表中的 P_id 相同。这是我到目前为止所做的:

create table in_gallery (
        P_id             NUMBER (10) CONSTRAINT PK_IN_GALLERY PRIMARY KEY,
        CONSTRAINT IN_GALLERY_FK FOREIGN KEY(P_id) REFERENCES painting(P_id) ON DELETE CASCADE);

create table on_loan (
        P_id             NUMBER (10), 
        CONSTRAINT BOOK_IS_IN_GALLERY CHECK(P_id != in_gallery(P_id)));

这会出现错误:

ERROR at line 3:
ORA-00904: "IN_GALLERY": invalid identifier

我该如何解决这个错误?

谢谢。

【问题讨论】:

    标签: sql constraints


    【解决方案1】:

    您不能在检查约束中引用另一个类似的表。

    查看问题here 的答案以获得一些解决方案。您可以使用用户定义的函数来实现这一点。

    编辑:同样基于您帖子中的一些信息,我认为您没有正确的规范化数据库模型。您可以有一个 Gallery 表和一个 Painting 表,两者之间存在关系。

    【讨论】:

    • 谢谢。是的,你说得对,它没有被标准化,但这超出了我的练习范围
    猜你喜欢
    • 2012-11-19
    • 1970-01-01
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-11
    • 2020-01-14
    相关资源
    最近更新 更多