Oracle
 sql >> база данни >  >> RDS >> Oracle

Как правилно да направите публичен синоним

Мисля, че Джъстин е на прав път. Това, което мисля, че всъщност означава, че mydbowner.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

Мисля, че това, което се случва, е, че Oracle се опитва да разреши mytable, няма mytable в схемата на mbobak, така че го търси в PUBLIC, намира го и вижда, че сочи към mbobak.mytable. Но mbobak.mytable не съществува, така че търси mytable в PUBLIC и това е цикълът.

И всъщност, ако създадете 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 „таблица или изглед не съществува “, което има много по-голям смисъл за мен.

Но изглежда, че така работи.

QED

Надявам се, че това помага.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Много бавна производителност в Django с отдалечен сървър на Oracle

  2. Задействайте алтернативи за две таблици, които трябва да се актуализират взаимно

  3. няма съответстващ уникален или първичен ключ за този списък с колони. Първичният ключ все пак съществува

  4. Име на SQL колона, същото като име на променлива PL/SQL - Как може да се направи това в оператор select?

  5. Добавяне на условия в израза MERGE в Oracle SQL за INSERT/UPDATE