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を解決しようとし、mbobakスキーマにmytableがないため、PUBLICで検索し、それを見つけて、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"テーブルまたはビューが存在しません。 "、これは私にとってはるかに理にかなっています。

    しかし、これはそれがどのように機能するかということのようです。

    QED

    お役に立てば幸いです。



    1. Postgres11をElasticBeanstalkにデプロイする-/etc/redhat-releaseが必要

    2. 数字からのMySQLMONTHNAME()

    3. 2番目のテーブルのフィルター条件を使用したOracle外部結合

    4. 投稿配列をコンマ区切りの列値で検索します