| AfterValidate トリガーイベント | |
AfterValidate トリガーイベントをトランザクションのルールに追加した場合、ルールに関連付けられているレベルの各インスタンスについて、そのインスタンスがレベルに関連付けられている物理テーブルに物理的に保存 (挿入、更新、または削除) される直前に、そのルールを実行するように指定されます。このトリガーイベントは、データベースの特定の操作 (挿入、更新、削除) を暗示的に取得しているわけではありません。ユーザーが確認し、関係するテーブルを書き込む直前に実行されます。
有効なトランザクションのルール [ IF condition ] [ ON AfterValidate ] ;
入力値の説明:
condition
有効な論理条件です。
[ Autonumber ] プロパティによって、主キーの項目属性に自動的に番号を付与するのではなく、特定の基準に従った特殊な記数法 (英数字) をユーザーが必要としたとします。このため、プロシージャーオブジェクトをプログラミングすることで、これを解決する必要があります。
このナンバリングプロシージャーを呼び出すために、主キーに特殊な記数法を必要とするトランザクション (Flight トランザクションとします) で、次のようなルールを定義する必要があります:
FlightId = NextFlightNumber() if Insert on AfterValidate;
この時点では、NextFlightNumber プロシージャーコードを把握することは重要ではありません。Flight トランザクションで定義されているこのルールを参照した場合、次のことが分かります:
- プロシージャーは主キーの値を返します。
- ユーザーがフライトを挿入する場合にルールが実行されます (if insert 条件が明示的にルールに追加されるため)。
- 第 1 レベルのデータが FLIGHT 物理テーブルにレコードとして挿入される直前に、ルールが実行されます (トリガーイベント: on AfterValidate であり、ルール内で参照される項目属性だけが第 1 レベルのトランザクションに属しているため)。
- プロシージャーの呼び出しはレコードをテーブルに挿入する前に実行されるため、このルールの定義は適切です。つまり、ユーザーが挿入を確認しているものの、実際にはまだ挿入が行われていない状態です。このため、プロシージャーで返された値が、Flight レコード書き込み時に、FlightId 項目属性に割り当てられます。
- 項目属性がルールで指定されていない場合は、第 1 レベルが指定されたものとして、ルールがトリガーされます。
オブジェクト: Transaction
After(Confirm) トリガーイベントは、下位互換性を保つために残されています。代わりに AfterValidate イベントを使用することを強くお勧めします。詳しくは、「ルールをトリガーするイベント」を参照してください。
トランザクションルール
ルールをトリガーするイベント
|
|
|
|
|