完整性约束无效的标识符SQL

时间:2013-11-27 16:19:29

标签: sql constraints

我是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

我该如何修复此错误?

感谢。

1 个答案:

答案 0 :(得分:1)

您无法在检查约束中引用其他类似的表。

检查问题here的答案以获取解决方案。您可以使用用户定义的函数来实现此目的。

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