0

私のデータベースには、たくさんのシーケンス、トリガー、テーブルがあります。どのテーブルがどのトリガー(およびシーケンス)に関連付けられているか毎回混乱します。これらのリストを単一のクエリで表示するにはどうすればよいですか?

4

4 に答える 4

0

Oracleでは、どのテーブルでどのシーケンスが使用されているかを見つけることができず、テーブルレベルで関連付けられていません。そのためには、コードを見つけて、それが使用されているシーケンスを検索する必要があります。挿入トリガーの前または PL/SQL コードで使用されている可能性があります。

トリガーについては、データ ディクショナリ ビューを確認できます

select table_name,
       trigger_name as object_name,
       'TRIGGER' object_type 
from ALL_TRIGGERS

編集 シーケンスを見つける私の方法は

  1. 「Seq_ID」が使用されている場所を確認したいとします。
  2. Select * from dba_source where lower(text) like '%seq_id.nextval%';
  3. これにより、シーケンスが参照されているコードがわかります。おそらく、コード内に挿入ステートメントが見つかります。そこから、このシーケンスがどのテーブルに関連付けられているかがわかります。
  4. または、トリガーコードが表示され、トリガーから参照されているテーブルを見つけることができます。
于 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 に答える