我试图在我的一张桌子上添加一个约束,以确保我的工人维护一个工作站,当且仅当该工作站处于该工人当前受雇的状态时。但是,Oracle 似乎不喜欢约束内的子查询。
我记得在我上过的一堂课上,当我这样做时,sqlplus 不喜欢跨表检查:
ALTER TABLE STATION ADD CONSTRAINT Check_Worker CHECK (Maintainer IN (
SELECT *
FROM
STATION s,
FOREST f,
COVERAGE c,
STATE st,
WORKER w
WHERE
s.x BETWEEN f.MBR_XMin AND f.MBR_XMax AND
s.y BETWEEN f.MBR_YMin AND f.MBR_YMax AND
f.Forest_Id = c.Forest_Id AND
st.State = w.employing_state
)
);
它对我大喊大叫:
'Question 3'
SELECT *
*
ERROR at line 2:
ORA-02251: subquery not allowed here.
那么,我有什么选择可以轻松解决这个问题吗?可能有多个约束?