2011-02-09 12 views
0

テーブルOLDと同様のものNEWがあります。私はテーブルOLDを埋める既存のプロセスに挿入したいトリガーイベントは、新しい挿入された行ごとに、このイベントは、テーブルに新しく挿入された行も挿入されます。トリガーの本体内に、私は前にNEWに挿入されたOLDの値を集計し、それ以下のクエリを含める必要があります。pl sql:別のテーブルからデータを挿入するためのトリガー

insert into NEW 
select (select a.id,a.name,a.address,b.jitter,a.packet,a.compo,b.rtd,a.dur from OLD a, 
     select address,packet,compo, avg(jitter) as jitter, avg(rtd) as rtd from OLD 
     group by address,packet,compo) b 
     where a.address=b.address and a.packet=b.packet and a.compo=b.compo; 

あなたはすべての可能なミスを修正するか、以下の文に他のトリガの構文を提案することができますか?

CREATE OR が始まる行ごとOLD に更新後TRIGGER挿入 をREPLACE 端上MY選択クエリ。

答えて

0

各行トリガでは、テーブル自体を照会することはできません。あなたがしている場合は、あなたは変異テーブルのエラーメッセージが表示されます。 私はID番号の渡しや非常に基本的なチェックのような最も基本的な機能のためにトリガを使用することをお勧めします。 トリガーをより複雑なタスクに使用すると、デバッグやメンテナンスが非常に難しいシステムで終わることがあります。別のアプローチのために、この質問で

ルック:getting rid of Insert trigger

0

Oracle Streamsのも良い解決策かもしれません。適用ハンドラでは、独自のカスタムPL/SQLコードを組み込むことができます。このプロシージャーはCOMMITの後に呼び出されるため、表のエラーの突然変異を避けることができます。

ただし、Streamsを動作させるには大量の設定が必要です。あなたがやっていることは過度のことかもしれません。

関連する問題