読者です 読者をやめる 読者になる 読者になる

小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


【原因】ORA-01775: シノニム定義がループしています。

oracle
はじめに

シノニムの参照先テーブルが存在しない場合、ORA-01775: シノニム定義がループしています。のエラーが発生することがあります。

Oracleの現場を効率化する100の技
鈴木 健吾 玉置 雄大 塩原 浩太 小林 修 大森 慎司 内村 友亮
技術評論社
売り上げランキング: 18,746

実験

1.table01テーブルを作成します。

create table table01
(
 id char(8),           --ID
 name varchar(50),     --名前
 furigana varchar(50), --ふりがな
 seibetsu varchar(3),  --性別
 birthday char(8),     --生年月日
 primary key( id )
);

2.パブリックシノニムを作成します。

conn sys/pwd as sysdba;
CREATE PUBLIC SYNONYM T1 FOR HOGE.TABLE01;

3.テーブルを削除します。

DROP TABLE HOGE.TABLE01;

4.削除したテーブルに対してシノニム経由で操作を行います。

SQL> delete from t1;
delete from t1
            *
行1でエラーが発生しました。:
ORA-01775: シノニム定義がループしています。
対処方法

ORA-01775のエラーが発生した場合には、descコマンドなどを使用して参照先のテーブルが本当に存在するか確認すると良いです。