4D v16.3Trigger event |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16.3
Trigger event
Trigger event
Trigger eventコマンドがトリガー内で呼び出されると、データベースイベントのタイプ、つまりそのトリガーが起動された理由を示す数値を返します。 Trigger Eventsテーマに以下のような定義済み定数があります。
トリガー内で複数のレコードに対してデータベース操作を実行すると、トリガーの正確な実行を妨げる条件 (通常レコードのロック) に遭遇します。この状況の例としては、[Invoices] テーブルにレコードを追加しているときに、[Products] テーブルにある複数のレコードを更新する場合が挙げられます。この時点で、必ずデータベースの操作を停止して、データベースのエラーを返さなければなりません。そうすることにより、起動プロセスがそのデータベースリクエストを実行できないことを理解します。起動プロセスはトリガーによって実行された不完全なデータベース操作を、トランザクション中にキャンセルできなければなりません。このような状況が発生した場合、トリガー内から何らかの操作を試みた前からそのプロセスがトランザクション内にあることを確かめる必要があります。これを実行するにはIn transactionコマンドを使用します。 トリガーのカスケードを呼び出す場合、4Dには使用可能なメモリの容量以外に制限はありません。トリガーの実行を最適化するために、データベースイベントだけでなく、トリガーがカスケードされて起動される際の呼び出しのレベルに基づいて、トリガーのコードを記述することもできます。例えば[Invoices] テーブルに対する削除データベースイベントの中で、[Invoices] レコードの削除が、削除された [Customers] レコードに関連したすべての送り状の削除にともなうものである場合には、[Customers] 総売上げフィールドの更新をスキップすることもできます。これを実行するにはTrigger levelとTRIGGER PROPERTIESコマンドを使用します。 Trigger eventコマンドを使用して、以下のようにトリガを作成します。 `[anyTable] 用のトリガー
参照
|
プロパティ
プロダクト: 4D 履歴
変更: 4D v11 SQL Release 2 ARTICLE USAGE
ランゲージリファレンス ( 4D v16) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||