読者です 読者をやめる 読者になる 読者になる

なぐりがき

SalesforceからときどきIdol



Salesforce:ガバナ制限 DML文

Salesforce

DML文は1トランザクションで150まで実行可能。
(Winter15)
※リリースで変更される可能性あり。

実際にやってみないとわからないってことで、
ループの中でinsertをして、151回までってしてみた。
ソースが汚いのはまあ(…)
たぶんこんな感じ。

for(Integer i =0;i <151 i="" br=""> List nList = new List();
NN__c nn = new nn_c();
nn.Name = 'name' + i ;
nList.add(nn);
//DML
Insert nList;
}

今まで漠然とループの中でInsert処理するなって言われてた理由がしっくり。
これちゃんと説明してくれた人いなかったなー(…)
Salesforceのガイドとか読めって話ですね。

エラーメッセージ
Too many DML statements: 151

150は大丈夫で151はエラーにちゃんとなるから、わかりやすかった。
まあ当たり前といえば当たり前なんだけども。

 

ガバナ制限に引っ掛からない様にするのは以下に修正。

List nList = new List();
for(Integer i =0;i <151 i="" br="">
NN__c nn = new nn_c();
nn.Name = 'name' + i ;
nList.add(nn);

}
//DML
Insert nList;

ループの外で実行すれば1回としかカウントされないってことで。
レベルアップ!