4

レガシー Oracle データベース システム (10g) を使用していますが、詳細なスキーマ情報がありません。テーブル内の特定のレコードを削除すると、他のテーブルでカスケード削除が発生するかどうかを確認する必要があります。トリガーを確認しました。しかし、参照制約によるカスケードについてはわかりません。これを特定する簡単な方法はありますか?

4

1 に答える 1

12

関連する外部キー制約を知っている (または判断できる) と仮定すると、次のDELETE_RULE列を確認できます。DBA_CONSTRAINTS

SELECT constraint_name, delete_rule
  FROM dba_constraints
 WHERE r_constraint_name = <<name of the primary key constraint>>
   AND r_owner = <<owner of the primary key constraint>>
   AND delete_rule = 'CASCADE'

特定の主キー制約を参照し、削除をカスケードするすべての外部キー制約が表示されます。親行が削除されたときに実行する制約が気になる場合は、があっSET NULLた行も探すことができます。delete_ruleSET NULL

テーブルに対する権限を持っていない場合は、自分が権限を持っているテーブルだけに関心があると仮定して、代わりに をDBA_CONSTRAINTS使用できることに注意してください。ALL_CONSTRAINTSSELECT

于 2013-04-28T10:30:35.870 に答える