Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cách tạo từ đồng nghĩa công khai một cách chính xác

Tôi nghĩ Justin đang đi đúng hướng. Điều tôi nghĩ nó thực sự có nghĩa là mydbowner.mytable không tồn tại.

Đây là một ví dụ:

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

Tôi nghĩ những gì đang xảy ra là Oracle cố gắng giải quyết bảng của tôi, không có bảng của tôi trong lược đồ mbobak, vì vậy nó tìm kiếm nó trong PUBLIC, nó tìm thấy nó và thấy rằng nó trỏ đến mbobak.mytable. Tuy nhiên, mbobak.mytable không tồn tại, vì vậy, nó tìm kiếm mytable trong PUBLIC và có vòng lặp.

Và trên thực tế, nếu bạn tạo mytable, lỗi sẽ biến mất:

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

Có, tôi nhận ra rằng điều đó không thực sự hoàn toàn có ý nghĩa, vì khi từ đồng nghĩa công khai được giải quyết thành mbobak.mytable, và điều đó không được tìm thấy, có vẻ như đối với tôi, nó sẽ trả về lỗi ORA-942 "bảng hoặc chế độ xem không tồn tại ", điều này có ý nghĩa hơn đối với tôi.

Nhưng, đây dường như là cách nó hoạt động.

QED

Hy vọng điều đó sẽ hữu ích.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi tắt máy Oracle ORA-01033

  2. ASP.net MVC và tổng hợp kết nối với Oracle, cho phép nhiều kết nối hơn được chỉ định trong Kích thước nhóm tối đa

  3. sql selectL hàng thành cột mà không có truy vấn con

  4. Chỉ kích hoạt các giá trị đã thay đổi

  5. Oracle không thể cập nhật lên NULL