【Salesforce】System.CalloutException: You have uncommitted work pending. Please commit or rollback before calling

【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.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です