2012-02-26 2 views
0

トラフィックの細かい制御システムを実装しようとしています。レーダー観測が表OBSERVACIONに導入されると、トリガーは、同じ車の上に観測された列があるかどうかをチェックしてから、きれいなコストを計算する必要があります。すべての行のトリガー条件

トリガーでテーブルのすべての行の条件ステートメントをチェックします。つまり、トリガーcondtionがテーブルのすべての値をチェックし、その内の1つが導入されたNEW値と等しいかどうかを調べるようにします。

WHEN(NEW.fecha_foto = fecha_foto)AND... 

ここで、fecha_fotoはテーブル内の任意の値です。

可能ですか?

ありがとうございました。

+1

これは不可能であり、実際には望ましくありません。なぜあなたはこれをしたいのですか? – APC

+0

私は交通罰金の行を持つテーブルを持っていると私は新しい行と以前の既存のものとの間の時間を確認したい。 – Nausikaa

+2

実装するビジネスロジックは何ですか? – APC

答えて

1

トリガーを所有している同じ表に対してDML(SELECTを含む)を発行するトリガーは、変換表の例外であるORA-4091の幽霊を呼び起こします。 Oracleでは、トランザクションの結果が確定的であると予想し、独自の表でDMLを発行するトリガーによって手続きへの不確実性が生じるため、このエラーが発生します。

突然変異表は、悪いデザイン、特に悪いデータモデルの信頼できる指標であり、ここではそうであるようです。

罰金の値が単一の観測の結果に依存する場合は、FINEがOBSERVACION表の列であれば問題ありません。しかし、あなたのビジネスルールは、ある期間内に値がある場合、値がいくつかの観察に依存する可能性があることを示しています。このシナリオでは、罰金はそれ自身のテーブルになければなりません。 OBSERVACIONとMULTAの間には、特定の罰金の対象となる観測値を示すために、外部キーが必要です。

+0

私は最終的に、一時的なテーブルで比較したいデータを導入して解決しました。 – Nausikaa

+0

正直なところ、適切な解決策よりも多くのような音が聞こえます。 – APC

関連する問題