0

作成したビューの 1 つのフィールドをチェックするトリガーを作成するにはどうすればよいですか。基本的に、ビュー テーブルのフィールドには、データベースに追加された製品の合計金額が表示されます。トリガーには指定された最大合計金額があるため、データベースに追加された製品の合計が最大に達すると、トリガーはユーザーに警告し、それ以上製品を追加できなくなります。

ちなみに、ビューでトリガーを設定することが私の目的を達成するための最良の方法であるかどうかはわかりません。私はオラクル11gを使用しています

4

2 に答える 2

1

トリガーロジックをテーブルの複数の行に基づいて、さまざまなセッションによるテーブルへの同時変更に対処したいようです。

これは機能しません。各セッションはコミットされるまで他のユーザーが行った変更を確認できないため、2 つのセッションが同時にシステムに行を追加し、それら自体が製品の制限を超えていないことを確認し、コミットすることができます。変更の組み合わせにより制限を超えることができます。

これを行う唯一の安全な方法は、テーブルへの変更をシリアル化するか (DBMS_Lock が最適なメカニズムです)、マテリアライズド ビューを更新する高速コミットを使用して、チェックする量を 1 つの行に合計し、制約を適用することです。その列 (これは実質的にシリアル化メカニズムでもあります)。

于 2013-05-07T08:29:08.797 に答える