programing

공개 동의어를 올바르게 만드는 방법

subpage 2023. 10. 1. 19:27
반응형

공개 동의어를 올바르게 만드는 방법

꽤 바보같은 짓이긴 하지만 도움이 필요해요.

제 dbowner 소유의 테이블이 있습니다.이름은 mydbowner.mytable 입니다.나는 다음 명령을 실행하여 공개적인 동의어를 만들려고 했습니다.

mydbowner.mytable의 Public Synonym mytable을 만들거나 바꿉니다;

이 작업을 수행하면 테이블을 조회할 수 있습니다.

ORA-01775: 동의어 루프 체인

어떻게 하면 문제가 없이 이 동의어를 만들 수 있을까요?

저는 저스틴이 올바른 방향으로 가고 있다고 생각합니다.내 dbowner.mytable이 존재하지 않는다는 것을 의미한다고 생각합니다.

예는 다음과 같습니다.

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

제 생각에는 오라클이 제 테이블을 해결하려고 하는데, mbobak 스키마에 제 테이블이 없어서 PUBLIC에서 찾고, 찾아서 mbobak.mytable을 가리키는 것 같습니다.근데 음보박. 내 테이블이 존재하지 않아서 PUBLIC에서 내 테이블을 찾고 루프가 있습니다.

내 테이블을 만들면 오류가 사라집니다.

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 is not existing"이라는 오류를 반환해야 하므로 완전히 말이 되지 않는다는 것을 알고 있습니다.

하지만, 이것은 그것이 작동하는 방법인 것 같습니다.

QED

도움이 되길 바랍니다.

당신이 받고 있는 오류는mydbowner.mytable사실은 테이블이 아닙니다.무엇인가.

SELECT object_type
  FROM all_objects
 WHERE owner = 'MYDBOWNER'
   AND object_name = 'MYTABLE'

돌아오십니까?

언급URL : https://stackoverflow.com/questions/8995098/how-to-correctly-make-a-public-synonym

반응형