Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak poprawnie utworzyć publiczny synonim

Myślę, że Justin jest na dobrej drodze. Myślę, że tak naprawdę oznacza to, że mydbowner.mytable nie istnieje.

Oto przykład:

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

Myślę, że to, co się dzieje, polega na tym, że Oracle próbuje rozwiązać mytable, nie ma mytable w schemacie bobak, więc szuka go w PUBLIC, znajduje go i widzi, że wskazuje na bobak.mytable. Ale bobak.mytable nie istnieje, więc szuka mytable w PUBLIC i jest tam pętla.

I faktycznie, jeśli utworzysz mytable, błąd zniknie:

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

Tak, zdaję sobie sprawę, że tak naprawdę nie ma to do końca sensu, ponieważ po ustaleniu publicznego synonimu na bobak.mytable, a nie znaleziono, wydaje mi się, że powinien zwrócić błąd ORA-942 „tabela lub widok nie istnieje ”, co jest dla mnie o wiele bardziej sensowne.

Ale wydaje się, że tak to działa.

QED

Mam nadzieję, że to pomoże.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można uzyskać dostępu do pola przez hibernację w bazie danych Oracle w innej przestrzeni użytkownika z tylko wybranymi uprawnieniami

  2. ORA-04076:nieprawidłowa NOWOŚĆ lub STARA specyfikacja - PL/SQL - Wyzwalacz Oracle

  3. Łączenie liczb w wyrażeniu kolumny wirtualnej powoduje wyświetlenie ORA-12899:wartość za duża dla kolumny

  4. Wyzwalacz mutacji Wyroczni

  5. czy możemy wykonać polecenie uniksowe z procedury oracle10g?