チームプロジェクトのために数年後に 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 エントリのチェックをマークします。毎時ジョブがこのプロシージャを実行するようになりました。
助言がありますか?助けてくれてありがとう!