私のデータベースには、たくさんのシーケンス、トリガー、テーブルがあります。どのテーブルがどのトリガー(およびシーケンス)に関連付けられているか毎回混乱します。これらのリストを単一のクエリで表示するにはどうすればよいですか?
質問する
423 次
4 に答える
0
Oracleでは、どのテーブルでどのシーケンスが使用されているかを見つけることができず、テーブルレベルで関連付けられていません。そのためには、コードを見つけて、それが使用されているシーケンスを検索する必要があります。挿入トリガーの前または PL/SQL コードで使用されている可能性があります。
トリガーについては、データ ディクショナリ ビューを確認できます
select table_name,
trigger_name as object_name,
'TRIGGER' object_type
from ALL_TRIGGERS
編集 シーケンスを見つける私の方法は
- 「Seq_ID」が使用されている場所を確認したいとします。
- Select * from dba_source where lower(text) like '%seq_id.nextval%';
- これにより、シーケンスが参照されているコードがわかります。おそらく、コード内に挿入ステートメントが見つかります。そこから、このシーケンスがどのテーブルに関連付けられているかがわかります。
- または、トリガーコードが表示され、トリガーから参照されているテーブルを見つけることができます。
于 2013-09-25T11:33:37.087 に答える
0
次のステートメントでトリガーとシーケンスを見つけることができます
select
table_name, trigger_name, referenced_name as sequence_name
from
all_triggers
join all_dependencies
on name = trigger_name and referenced_type = 'SEQUENCE'
;
于 2013-09-25T12:02:25.537 に答える