여기 내 시나리오 :오라클 프로 시저 동의어 부모 스키마 테이블에서 작동이
스키마 : USER_1 패키지 : PKG_1 절차 : PROC_1 테이블 : MY_TABLE
스키마 : USER_2
그래서 나는 또한 MY_TABLE를 업데이트 PKG_1.PROC_1, 동의어를 가지고, 두 스키마, USER_2이 USER_1 거의 모든 테이블에 대한 동의어를 가지고 있습니다. 그러나 USER_1 대신 USER_2...에서 PKG_1.PROC_1 절차 업데이트 테이블 USER_2 동의어를 사용하는 경우
어떻게이의 동의어를 실행하는 것과 동일한 스키마의 테이블에서 동작 할 수 다른 스키마의 프로 시저?
기본적으로, 내가 무엇을 기대 실제로 USER_2.MY_TABLE에 변화를 볼 수 있지만 변화는 ...이
내가 USER_2으로 이런 짓을
수행되지 않습니다 :CREATE OR REPLACE SYNONYM MY_TABLE FOR USER_1.MY_TABLE;
CREATE OR REPLACE SYNONYM PKG_1 FOR USER_1.PKG_1;
EXECUTE PKG_1;
I을 오류가없고 USER_2에 연결하면 DBMS_OUTPUT.PUT_LINE
개의 로그까지 표시되고 올바르게 표시됩니다. 그러나 PKG_1.PROC_1 내가 할 경우, MY_TABLE에서 레코드를 삭제 말 :
SELECT RECORD FROM USER_1.MY_TABLE;
이 삭제되었습니다, 나는 레코드가 삭제하지만,되지 않았습니다 볼 수 있습니다 USER_2를 사용
SELECT RECORD FROM MY_TABLE;
.
감사합니다.