設問
Universal Containers は、AccountShare レコードを手動で作成し、特定のユーザに個別のアカウントへのアクセスを許可する Apex コードを開発しました。アカウントの所有者が変更されたときに、AccountShare レコードが削除されないようにするには、アーキテクトは何をする必要がありますか?
選択肢
A. 共有レコードを作成し、RowCause をカスタム Apex 共有理由に設定します。
B. 「共有なし」キーワードを使用してクラス内に共有レコードを作成します
C. [所有者変更時に削除] フィールドを false に設定して共有レコードを作成します。
D. 共有レコードを作成し、RowCause を Manual に設定します。
解答
A. 共有レコードを作成し、RowCause をカスタム Apex 共有理由に設定します。
解説
A. 共有レコードを作成し、RowCause をカスタム Apex 共有理由に設定します。
正解です。Apex 管理共有(Managed Sharing)で作成された共有レコードは、RowCause にカスタムの理由(例: “My_Custom_Share”)を使用することで、所有者変更時に削除されず永続化されます。
B. 「共有なし」キーワードを使用してクラス内に共有レコードを作成します
不正解です。”without sharing” はそのクラスの共有ルールの適用有無を制御するもので、共有レコードの保存期間や削除可否には影響しません。
C. [所有者変更時に削除] フィールドを false に設定して共有レコードを作成します。
不正解です。このようなフィールドは AccountShare オブジェクトには存在しません。RowCause の値で削除対象かどうかが制御されます。
D. 共有レコードを作成し、RowCause を Manual に設定します。
不正解です。”Manual” は UI から手動共有されたときの RowCause であり、Apex コードから直接指定することはできず、使用しても所有者変更時に削除される可能性があります。
第154問
こちらをクリック