2011-09-27 3 views
3

Oracle 데이터베이스를 사용하여 문제를 해결해야합니다. Oracle 데이터베이스에서 스키마 이름 대 테이블 이름 - 충돌을 피하는 방법?

두 스키마가 있습니다 XXX 및 YYY

는 스키마 XXX 테이블 이름 YYY (두 번째 스키마와 같은 이름)이 포함되어 있습니다.

스키마 YYY에는 일부 시퀀스 (시퀀스 ZZZ라고 가정 해 봅시다)와 로그 테이블이 포함되어 있으며 스키마 XXX에서 트리거에 의해 사용해야합니다. 나는이 구성을 사용하여 테이블 XXX.some_table을 통해 트리거를 작성하려고 할 때

는하지만 :

SELECT YYY.ZZZ.NEXTVAL INTO AAA FROM DUAL 

오라클은 XXX 스키마와 쇼 오류 메시지 의 테이블로 YYY을 고려한다 "구성 요소 ZZZ는를 선언해야합니다." XXX 사용자가 YYY.ZZZ 시퀀스에 액세스 할 수있는 적절한 권한이 있지만 쓸모가 없습니다.

어떻게 피 하시겠습니까? 불행히도 데이터베이스의 구조가 설정되어 변경할 수 없습니다.

답변

6

트리거 코드를 쓸 수 있으므로 일부 데이터베이스를 제어 할 수 있습니다. 좋습니다.

난 당신이를 arround 일 동의어를 사용하는 것이 좋습니다 :

create synonym yyy_zzz_seq for yyy.zzz; 

당신은 다음 트리거에서 동의어를 참조 할 수 있어야한다 :

SELECT yyy_zzz_seq.NEXTVAL INTO AAA FROM DUAL 
+0

예,이 올바르게 작동합니다. 대단히 감사합니다. – Gil