以下のコード スニペットを参照してください。

Credit_Memo__c というカスタム オブジェクトが Salesforce 環境に存在します。このタイプのレコードを取得して操作する新機能開発の一環として、開発者は、Apex トランザクション内でレコードのセットが変更されるときに競合状態が確実に防止されるようにする必要があります。
前述の Apex コードで、開発者はクエリステートメントを変更して SOQL 機能を使用し、トランザクション内の競合状態を防ぐにはどうすればよいでしょうか?
正解:A
Apexトランザクション中の競合状態を防ぐには、SOQLクエリに「FOR UPDATE」キーワードを追加して変更します。このキーワードは、クエリによって返されるレコードをロックし、現在のトランザクションが完了するまで他のトランザクションによる変更を防止します。これにより、現在のトランザクションが完了するまでは、取得したレコードが他のプロセスによって変更されることがなくなり、競合状態を回避できます。提供されているコードスニペットで使用する正しいオプションは次のとおりです。
[SELECT Id, Name, Amount__c FROM Credit_Memo__c WHERE Customer_Id__c = :customerId LIMIT
50 アップデート用]
これにより、トランザクションの期間中、指定された Customer_Id__c を持つ Credit_Memo__c のレコードが最大 50 件ロックされます。
参考文献:
アップデート用
レコード更新の競合を防ぐ