この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

ステップ 1: データベーストリガを作成する

Invoice オブジェクトにトリガを作成します。
  1. [設定] から、[クイック検索] ボックスに「オブジェクト」と入力し、[オブジェクト] を選択して [請求書] をクリックします。
  2. [トリガ] まで下へスクロールし、[新規] をクリックします。
  3. エディタで、<name>「DeleteRestrictInvoice」で置き換えます。
  4. 同様に、<events>「before delete」で置き換えます。
  5. テンプレートのコードを次のコードで置き換えます。

    ソースコードについては、https://gist.github.com/3605667を参照してください。

    1trigger DeleteRestrictInvoice on Invoice__c (before delete) {
    2
    3// create a list of Invoices in Trigger.oldMap along with their Line Items
    4List<Invoice__c> invoices = [Select i.Name, (Select Name From Line_Items__r)
    5										From Invoice__c i
    6										Where i.Id IN :Trigger.oldMap.keySet()];
    7
    8// loop through the Invoices, attaching errors to those that have Line Items
    9for (Invoice__c invoice : invoices) {
    10	   if (!invoice.Line_Items__r.isEmpty()) {
    11      Trigger.oldMap.get(invoice.id).addError('Cannot delete Invoice with Line Items');
    12      }
    13   }
    14}
  6. [保存] をクリックします。

もうひとこと...

  • トリガは、DML 操作の前または後に起動できます。このチュートリアルのトリガは、Invoice オブジェクトの 1 つ以上のレコードを対象とする削除操作を実行する前に起動されます。
  • トリガは、コンテキスト変数という特殊な変数にアクセスできます。簡単に言うと、古いコンテキスト変数と新しいコンテキスト変数によって、トリガを起動するコールによって更新される sObject の古いコピーと新しいコピーを取得できます。コードを見るとわかるように、コンテキスト変数は、トリガボディ内の処理の範囲を設定するのに便利です。
  • FOR ループでは、トリガは検証エラーを品目を持つ請求書に追加するだけですが、これによって Force.com プラットフォームがトリガを起動したトランザクション (この場合は delete) をロールバックします。