完整性约束无效标识符SQL



我是SQL的新手,目前我试图在其中一列上设置约束时遇到问题。

我的数据库为美术馆建模,绘画可以在美术馆中,也可以借给另一家美术馆。很明显,不可能两者都是,所以我试图在创建我的on_land表时对它施加约束,以阻止on_land表格的绘画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

我该如何修复此错误?

谢谢。

在检查约束中不能引用其他类似的表。

请查看此处的问题答案以获取一些解决方案。您可以通过用户定义的函数来实现这一点。

编辑:根据你文章中的一点点信息,我认为你没有一个正确的规范化数据库模型。你可以有一个画廊表和一个绘画表,两者之间有关系。

最新更新