テーブルをドロップしようとすると、エラーが発生します
SQL Error: ORA-00604: error occurred at recursive SQL level 2
ORA-01422: exact fetch returns more than requested number of rows
00604. 00000 - "error occurred at recursive SQL level %s"
*Cause: An error occurred while processing a recursive SQL statement
(a statement applying to internal dictionary tables).
*Action: If the situation described in the next error on the stack
can be corrected, do so; otherwise contact Oracle Support.
エラーから次の行に気付きました。
exact fetch returns more than requested number of rows
その後、私は考えていました。Oracleは1行を期待していましたが、複数行を取得していました。また、デュアルテーブルのみがその特性を持ち、1つの行のみを返します。
そして、私が覚えているのは、デュアルテーブルの変更はほとんど行っておらず、デュアルテーブルを実行したときです。その後、複数の行が見つかりました。
ここで、dual
テーブルを切り捨て、X
値を持つ行のみを挿入しました。そして、すべてが正常に動作しています。
考えられる説明の1つは、DROP TABLE
ステートメントごとに起動するデータベーストリガーです。トリガーを見つけるには、_TRIGGERS
辞書ビューをクエリします。
select * from all_triggers
where trigger_type in ('AFTER EVENT', 'BEFORE EVENT')
疑わしいトリガーを無効にします
alter trigger <trigger_name> disable;
DROP TABLE
ステートメントを再実行してみてください