Apex トリガTriggerの使い方のサンプル

環境
Salesforce

書式

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
trigger TriggerName on ObjectName (trigger_events) {
if (Trigger.isInsert) {
if (Trigger.isBefore) {
// Before Insert 処理コード
} else if (Trigger.isAfter) {
// After Insert 処理コード
}
}
trigger TriggerName on ObjectName (trigger_events) { if (Trigger.isInsert) { if (Trigger.isBefore) { // Before Insert 処理コード } else if (Trigger.isAfter) { // After Insert 処理コード } 略 }
trigger TriggerName on ObjectName (trigger_events) {
    if (Trigger.isInsert) {
        if (Trigger.isBefore) {
            // Before Insert 処理コード
        } else if (Trigger.isAfter) {
            // After Insert 処理コード
    }
    略
}

Apex トリガを使用すると、Salesforce のレコードに対するイベント (挿入、更新、削除) の前または後にカスタムアクションを実行できます。
trigger_events指定できるのは次のイベントです。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
before insert
before update
before delete
after insert
after update
after delete
after undelete
before insert before update before delete after insert after update after delete after undelete
before insert
before update
before delete
after insert
after update
after delete
after undelete

使用例

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
trigger EmployeeTrigger on Employee__c (before insert, before update, before delete, after insert, after update, after delete, after undelete) {
if (Trigger.isInsert) {
if (Trigger.isBefore) {
// Before Insert 処理
} else if (Trigger.isAfter) {
// After Insert 処理
}
xxx
}
trigger EmployeeTrigger on Employee__c (before insert, before update, before delete, after insert, after update, after delete, after undelete) { if (Trigger.isInsert) { if (Trigger.isBefore) { // Before Insert 処理 } else if (Trigger.isAfter) { // After Insert 処理 } xxx }
trigger EmployeeTrigger on Employee__c (before insert, before update, before delete, after insert, after update, after delete, after undelete) {
    if (Trigger.isInsert) {
        if (Trigger.isBefore) {
            // Before Insert 処理
        } else if (Trigger.isAfter) {
            // After Insert 処理
    }
    xxx
}

トリガと実行の順序

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
1.古いレコードをデータベースからロード(または、upsert 用レコード初期化)
2.新しいレコードの値で古い値を上書き
3.システムの入力規則
4.すべての before トリガ
5.システムの入力規則 + カスタム入力規則
6.重複ルール
7.レコード保存(コミットされていない)
8.レコード再ロード
9.すべての after トリガ
10.割り当てルール
11.自動応答ルール
12.ワークフロールール
13.ワークフロー項目自動更新が存在する場合、レコードが再度更新されます。
14.ワークフロー項目自動更新でレコードが更新された場合、標準の入力規則に加えて、before update トリガおよび after update トリガがもう一度 (さらに 1 回のみ) 実行されます。
カスタム入力規則、重複ルール、およびエスカレーションルールは再実行されません。
15.プロセス
16.エスカレーションルール
17.積み上げ集計数式の値の更新
18.条件に基づく共有の評価
19.データベースのコミット
20.コミット後のロジック(メールの送信)
1.古いレコードをデータベースからロード(または、upsert 用レコード初期化) 2.新しいレコードの値で古い値を上書き 3.システムの入力規則 4.すべての before トリガ 5.システムの入力規則 + カスタム入力規則 6.重複ルール 7.レコード保存(コミットされていない) 8.レコード再ロード 9.すべての after トリガ 10.割り当てルール 11.自動応答ルール 12.ワークフロールール 13.ワークフロー項目自動更新が存在する場合、レコードが再度更新されます。 14.ワークフロー項目自動更新でレコードが更新された場合、標準の入力規則に加えて、before update トリガおよび after update トリガがもう一度 (さらに 1 回のみ) 実行されます。 カスタム入力規則、重複ルール、およびエスカレーションルールは再実行されません。 15.プロセス 16.エスカレーションルール 17.積み上げ集計数式の値の更新 18.条件に基づく共有の評価 19.データベースのコミット 20.コミット後のロジック(メールの送信)
1.古いレコードをデータベースからロード(または、upsert 用レコード初期化)
2.新しいレコードの値で古い値を上書き
3.システムの入力規則
4.すべての before トリガ
5.システムの入力規則 + カスタム入力規則
6.重複ルール
7.レコード保存(コミットされていない)
8.レコード再ロード
9.すべての after トリガ
10.割り当てルール
11.自動応答ルール
12.ワークフロールール
13.ワークフロー項目自動更新が存在する場合、レコードが再度更新されます。
14.ワークフロー項目自動更新でレコードが更新された場合、標準の入力規則に加えて、before update トリガおよび after update トリガがもう一度 (さらに 1 回のみ) 実行されます。
  カスタム入力規則、重複ルール、およびエスカレーションルールは再実行されません。
15.プロセス
16.エスカレーションルール
17.積み上げ集計数式の値の更新
18.条件に基づく共有の評価
19.データベースのコミット
20.コミット後のロジック(メールの送信)

 

Apex

Posted by arkgame