programing

Oracle에서 보기를 참조하는 외부 키

javajsp 2023. 7. 13. 20:39

Oracle에서 보기를 참조하는 외부 키

외부 키로 보기를 참조하려고 하는데 다음 오류가 발생합니다.

"오류: ORA-02270: 이 열 목록에 일치하는 고유 또는 기본 키가 없습니다."

그러나 이 보기에 기본 키를 생성하여 TOD의 제약 조건 탭에서 확인했습니다.

다음 표를 작성하려고 합니다.

CREATE TABLE QUESTION
(   
    QUESTION_ID             INTEGER not null,
    CREATED_USER_ID         INTEGER not null,    
    CONSTRAINT PK_QUESTION  PRIMARY KEY (QUESTION_ID),
    CONSTRAINT FK_USER
        FOREIGN KEY (CREATED_USER_ID)
        REFERENCES SOME_VIEW(VIEW_ID)
);

SOME_VIEW는 다른 스키마의 직원 테이블을 가리키는 다른 뷰를 기반으로 하는 뷰입니다.

보기에 대한 외부 키를 만들 수 있는 가능성과 상관없이, 그것은 실제로 구현하기에 가장 좋은 아이디어가 아닙니다.

데이터베이스 뷰는 사용자가 필요한 일부 데이터를 편안하게 쿼리할 수 있도록 설계되었지만 동시에 보안 장벽 역할을 하여 테이블, 테이블의 데이터 제약 조건 및 테이블 상호 참조를 포함한 모든 데이터베이스 구조를 숨길 수 있도록 설계되었습니다.

따라서 다른 계획에 있는 테이블에도 불구하고 새 테이블에서 기존 테이블을 참조하는 것이 좋습니다.

다른 스키마를 가리키므로 SOME_VIEW를 Materialized 뷰로 구현하는 것이 최선입니다.그런 다음 구체화된 보기를 변경하여 기본 키를 추가하고 포어링 키에서 이 보기를 참조할 수도 있습니다.

다음은 https://docs.oracle.com/cd/A97630_01/server.920/a96567/repmview.htm 에서 읽어야 할 설명서입니다.

문제의 원인은 아마도 관점에 반대하는 외국인 키 때문일 것입니다.

언급URL : https://stackoverflow.com/questions/3833150/foreign-key-referencing-a-view-in-oracle