Apex 一括SOQLで商談を処理する方法

環境
Salesforce

構文
List リスト変数名 = [SELECT Id,Name FROM opportunity WHERE Id IN :Trrigge.New]
SOQLには実行数制限があるため、少ない回数で効率的にクエリを実行する必要があります。
forループの中にSOQLを書くと何度もクエリが実行されてしまうため、
ループ外にSOQLを実装します。

操作例
取引先トリガで関連商談レコードを処理します
サンプルコード

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Trigger AccountTrigger on Account(before insert) {
// SOQL実行
List<Account> oppList = [SELECT Id,Name,(SELECT Id,Name FROM Opportunities) FROM Account WHERE Id IN :Trigger.New]);
// トリガ処理
for(Account acc : oppList)
{
if(!acc.Opportunities.isEmpty())
{
for(Opporutnity opp : acc.Opportunities)
{
処理コード
}
}
}
}
Trigger AccountTrigger on Account(before insert) { // SOQL実行 List<Account> oppList = [SELECT Id,Name,(SELECT Id,Name FROM Opportunities) FROM Account WHERE Id IN :Trigger.New]); // トリガ処理 for(Account acc : oppList) { if(!acc.Opportunities.isEmpty()) { for(Opporutnity opp : acc.Opportunities) { 処理コード } } } }
Trigger AccountTrigger on Account(before insert) {
   // SOQL実行
   List<Account> oppList = [SELECT Id,Name,(SELECT Id,Name FROM Opportunities) FROM Account WHERE Id IN :Trigger.New]);
  
  // トリガ処理
  for(Account acc : oppList)
  {
    if(!acc.Opportunities.isEmpty())
    {
     for(Opporutnity opp : acc.Opportunities)
      {
       処理コード
      }
    }
   } 
}

 

Apex

Posted by arkgame