【Salesforce】System.CalloutException: You have uncommitted work pending. Please commit or rollback before calling
Salesforceで外部に向けてHTTPRequestを送信した際にエラーが発生しました。
System.CalloutException: You have uncommitted work pending. Please commit or rollback before calling
外部サービスに接続する前にDMLを発行すると出るエラーですね。
メッセージにもあるように、呼び出しの前にコミットかロールバックが必要なようです。
ただ、Apexにはコミットがなかったような気がします。
DMLの発行後にロールバックすれば意味がなくなりますから、実際に修正するときは処理の順番を変えることが多いですね。
https://help.salesforce.com/articleView?id=000003701&language=ja&type=1
つまり
DML発行
↓
外部への接続
から
外部への接続
↓
DML発行
と変更するわけですね。
上のURLを見ると、トランザクションを分けてもいいと書いてあります。
順番を変えられない場合はこちらの方法になりますね。
No comments.