0

チームプロジェクトのために数年後に Oracle (11g) の開発を振り返っており、助けが必要です。追加/ドロップ列がドロップされ、対応するビューが再作成される POC を実装しようとしています。ビューは、エイリアス名と列の選択を作成するためのマッピング テーブルを参照します。

私の解決策

--1. 列の追加、列の削除をスキャンする DDL トリガー -> 列名の識別 -> Field_Map テーブルの更新 -> ビューのドロップ -> Field_Map テーブルの別名でビューを作成

課題: DDL 内でのビューの作成が原因で、再帰トリガー エラーを受け取りました

--2. DDL トリガーは、列の追加、列の削除をスキャンします -> -> フィールド マップ テーブルを更新します -> 識別された列名、テーブルを Audit_DDL テーブルに書き込みます -> Audit_DDL テーブルの DML トリガーが起動します -> DDL トリガーを無効にします (再帰を避けるため) -> ビューを削除します-> Field_Map テーブルの別名でビューを作成します

課題: 再帰トリガー エラーを受け取りました。私は、それはまだフロー全体を1つのトランザクションと見なしていると思います。DML トリガーの下でビューの作成を分離しても役に立ちませんでした。

だから、私は代替案を考えています:

--3. トリガー、テーブルをスキーマ 1 に格納し、スキーマ 2 を表示します。ビューの作成はschema2で行われ、トリガーはschema1で構築されるため、これにより再帰が回避される可能性があると予想しています。

--4. テーブルの Audit_DDL エントリ (#2 から) をスキャンするストアド プロシージャを作成し、列を更新します。ビューを作成し、処理された Audit_DDL エントリのチェックをマークします。毎時ジョブがこのプロシージャを実行するようになりました。

助言がありますか?助けてくれてありがとう!

4

1 に答える 1