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

Salesforce環境には、Credit_Memo__cというカスタムオブジェクトが存在します。このタイプのレコードを取得および操作する新機能の開発の一環として、開発者は、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 件まで、トランザクションの期間中ロックされます。
参考文献:
更新情報
レコード更新の競合を防止する