我是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
我该如何修复此错误?
感谢。
答案 0 :(得分:1)
您无法在检查约束中引用其他类似的表。
检查问题here的答案以获取解决方案。您可以使用用户定义的函数来实现此目的。
编辑:同样基于你帖子中的一点点信息,我认为你没有正确的规范化数据库模型。你可以有一个Gallery表和一个两者之间有关系的绘画表。