function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
h_rh_r 

SOQLで読み取り専用で取得

権限制御とSOQLに関して質問します。

 

①オブジェクトが2つある

   OBJA=参照

   OBJB=参照・登録・更新・削除

 

②OBJBにはOBJAへの主従関係がある

 

で指定している場合に、

OBJBのトリガーで、Trigger.New(n).Relation__r.OBJA.Text__c;

と取得すると値が取得できません。

 

ですので、代替策として、

String tx = [Select Text__c From OBJA Where OBJA.Id = :Trigger.New(n).Relation__c];

のような形での取得を試みたのですが、

上記形式で取得するとOBJAの編集権限が必要になってしまいます。

 

ですので、SOQLの発行時に、読み取り専用で取得する方法があればお教えください。

 

以上、よろしくお願いします。

 

T.AizawaT.Aizawa

>OBJBのトリガーで、Trigger.New(n).Relation__r.OBJA.Text__c;

>と取得すると値が取得できません。

 

トリガのタイミングなのですが、before insertやbefore updateで値を取得していませんか?

このタイミングでは主従・参照項目はまだ紐付いていない状態です。

after insertやafter updateで試してみてください

h_rh_r

T.Aizawaさん

ご回答ありがとうございます。

 

確かに、beforeで取得しています。

ただ、使用処理が登録前チェック処理となっており、

afterではタイミングが遅くなってしまいます。

 

現在、Relation__r.OBJA_Text__cを取得する数式を作成し、

そちらを参照することで対応しています。

 

もしもっとシンプルに取得できる方法があればご教授ください。

 

以上、よろしくお願いいたします。