Apexでレコードを更新するには?

Apexでレコードを更新するには、対象のレコードのIDを指定する必要があります。これはApexにおける基本中の基本。本記事では、IDが設定されていないレコードに対して update を実行するとどうなるか、システム2課の会話を交えて楽しく解説しつつ、正しい更新手順を紹介します。


目次

💻 テーマ:Apexでレコードを更新するには?

Apexにおいて、既存のレコードを更新するには、次のステップを守る必要があります。重要なのは、「Salesforce内にすでに存在しているレコードのIDを持っていること」。IDのないレコードにupdateを実行しても、エラーになるだけです。

1️⃣ ステップ1:更新したいレコードを取得する

Account acc = [SELECT Id, Name FROM Account WHERE Name = 'IRODORI Press' LIMIT 1];
🔸 SELECT文で取得すると、IDが付いた状態でレコードが変数accに格納されます。
🔸 ここで取得したデータが「更新対象」です。

2️⃣ ステップ2:フィールドの値を変更する

acc.Name = 'IRODORI Communications';

🔸 このように、目的のフィールド(この場合はName)に新しい値を代入します。
🔸 値を変更しないままupdateすると、更新処理は走るものの、結果は何も変わりません。

3️⃣ ステップ3:updateでDML操作を実行する

update acc;

🔸 update はDML文(Data Manipulation Language)で、実行時にはトリガーやワークフローなども動作します。
🔸 本番環境で使う際は、事前にテストクラスやサンドボックスでの検証を忘れずに。

🐞 例外処理(try-catch)の活用

try {
    update acc;
} catch (DmlException e) {
    System.debug('更新に失敗しました: ' + e.getMessage());
}

🔸 更新時にバリデーションルール違反アクセス権限の問題があると、例外(エラー)が発生します。
🔸 try-catchブロックを使うことで、エラー内容をログに残したり、処理を止めずにハンドリングできます。

🔄 トリガーとの関係

🔸 updateを実行すると、関連する**トリガー(before update / after update)**がすべて起動します。
🔸 たとえば、Accountの更新がContactに影響するようなトリガーがある場合、意図しない副作用が起きることも。
👉 トリガーの動作も含めてテストクラスで網羅的に確認しましょう。


🌟 ノックスの格言

「コードは魔法ではありません。意志をこめて正しく紡げば、世界が少しずつ変わるのです」
(銀河歴8221年 ネクタリス・オーヴァ大学 情報魔法学部 卒業講義より)

(英語訳:”Code is not magic. But when written with clear intent, it has the power to reshape the world.”)
(原語訳:”Thalon sereth noxa. Viresta kal simareth, lun’ar tharen vos riala.”)

💡 さやかの学びメモ

  • 更新対象レコードのIDを取得することが必須!
    new オブジェクト()だけではIDが設定されないので、必ずSELECT文で既存レコードを取得すること!
  • DML操作はトリガーやバリデーションルールも起動する!
    → 本番前にデバッグモードでエラー表示や動作を確認し、try-catchで例外処理を行うこと!

では、また次回の 異星人Salesforce講座 でお会いしましょう!👽✨

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次