이것은 꽤 어리석은 일이지만 도움이 필요합니다.올바르게 공개 동의어를 만드는 방법
mydbowner가 소유 한 테이블이 있습니다. 이름은 mydbowner.mytable입니다. 나는 명령을내어 공개 동의어를 만들려고했다.
mytable FOR mydbowner.mytable을 만들기 또는 바꾸기;
나는 이렇게, 나는 내가 할 테이블 쿼리 할 때 : 문제없이 나는이 동의어를 어떻게해야합니까 동의어
의 루핑 체인 :
ORA-01775를.
이것은 꽤 어리석은 일이지만 도움이 필요합니다.올바르게 공개 동의어를 만드는 방법
mydbowner가 소유 한 테이블이 있습니다. 이름은 mydbowner.mytable입니다. 나는 명령을내어 공개 동의어를 만들려고했다.
mytable FOR mydbowner.mytable을 만들기 또는 바꾸기;
나는 이렇게, 나는 내가 할 테이블 쿼리 할 때 : 문제없이 나는이 동의어를 어떻게해야합니까 동의어
의 루핑 체인 :
ORA-01775를.
저스틴은 올바른 방향이라고 생각합니다. 내가 실제로 생각하는 것은 mydbowner.mytable이 존재하지 않는다는 것입니다. 그것을 발견,이 mbobak 스키마에는 MYTABLE이 없다, 그래서 PUBLIC에서 찾습니다,
SQL> conn mbobak
Enter password:
Connected.
SQL> drop table mytable;
drop table mytable
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> create public synonym mytable for mbobak.mytable;
Synonym created.
SQL> select * from mytable;
select * from mytable
*
ERROR at line 1:
ORA-01775: looping chain of synonyms
내가 무슨 일이의 것은 오라클이 MYTABLE 확인하려고한다는 것입니다 생각하고 있음을 본다 : 여기
은 예입니다 그것은 mbobak.mytable을 가리 킵니다. 하지만 mbobak.mytable은 존재하지 않으므로 PUBLIC에서 mytable을 찾았고 루프가 있습니다. 당신이 MYTABLE 만드는 경우그리고 사실
는 오류가 도망 간다 :SQL> create table mytable as select * from dual;
Table created.
SQL> select * from mytable;
D
-
X
1 row selected.
SQL> drop table mytable;
Table dropped.
SQL> select * from mytable;
select * from mytable
*
ERROR at line 1:
ORA-01775: looping chain of synonyms
예로서 공용 동의어가 mbobak.mytable로 결심하면, 나는 그 정말 완전히 이해가되지 않습니다 실현, 그게 발견되지 않는다면, 그것은 나에게 보인다. ORA-942 "table or view does not exist"라는 에러를 리턴해야하는데, 이것은 나에게 훨씬 더 의미가있다.
하지만이 방법이 효과가있는 것 같습니다.
QED
희망이 있습니다.
오류가 발생하면 mydbowner.mytable
은 실제로 테이블이 아닙니다. 무엇이
SELECT object_type
FROM all_objects
WHERE owner = 'MYDBOWNER'
AND object_name = 'MYTABLE'
반환합니까?
두 답변이 정확합니다. 나는 일종의 오타를 만들었고 동의어는 아무것도 언급하지 않았다. – Joe