내 테이블 중 하나에 제약 조건을 추가하여 해당 직원이 현재 근무중인 상태에있는 경우에만 내 직원이 스테이션을 유지하도록하고 있습니다. 그러나 오라클은 제약 조건 내부의 하위 쿼리를 좋아하지 않는 것으로 보입니다.하위 쿼리가 "여기 허용되지 않습니다"
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.
할, 다시 그 SQLPLUS 내가 할 때이 테이블에서 검사를 좋아하지 않는 동안
나는 내가했다 클래스에서 기억 이 문제를 쉽게 해결할 수있는 옵션이 있습니까? 아마도 여러 제약들?
트리거와 함께 다음과 같이 복잡한 무결성 검사를 수행 할 수 있습니다. http://stackoverflow.com/questions/8418456/is-this-possible-in-oracle-sql/8419526#8419526 – gwaigh
http : /stackoverflow.com/questions/4071024/using-subquery-in-a-check-statement-in-oracle – Max
@ Max의 제안에 대한 답변이 적용됩니다. 트리거 (좋아요), 패키지 (더 나은) 또는 데이터 모델 변경 (최상의 옵션)을 사용해야합니다. – Ben