Adsenseコード

2017-10-17

【Salesforce】参照関係のあるレコードを復元したら、どこまで参照は保持されるか

■親子関係にあるレコードを delete, undelete した時、
どのような挙動になるのかを改めて調査しました




■参照先が削除された場合は項目の値をクリア に設定している場合

子オブジェクトに親オブジェクトの参照項目を作成し、参照項目の
「参照レコードが削除された場合の対処方法」の選択を
「この項目の値をクリアします。 この項目を必須にした場合、
このオプションは選択できません。」を選んだ場合の挙動です



以下の操作をします
1.親レコードを作成
2.子レコードを、親レコードを参照するように作成
3.親レコードを削除
4.削除した親レコードを復元



以下の結果になります
3.この時、子レコードの親への参照先項目は、
 Salesforce標準のレコード画面では空白になりました
 またSOQLでクエリを投げて、レコードの参照先SalesforceIDを確認すると、
 参照先SalesforceIDも空白になっていました


4.子レコードの親への参照先項目は復元されていました


※ 3と4の間で、子レコードの親への参照先を別に設定、
 保存をすると、4の復元実行後も間で設定した値は保持されていました
 ごみ箱削除中に新たに値を設定すると
 そちらが優先されるということですね


※ ごみ箱削除中の子レコードの親への参照先項目は空の状態ですが、
 インライン編集で空の状態で再保存しても、4の操作でちゃんと
 リレーションは復元されました。
 


■子から参照されている場合は削除できない に設定している場合

子オブジェクトの参照項目の設定で
「参照関係に含まれる参照レコードは削除できません。」
を設定している場合の挙動です



以下の操作をします
1.子が親を参照するような、親子レコードを作成
2.子レコードを削除
3.親レコードを削除
4.削除した親レコードを復元



以下の結果になります
2.この操作終了後のごみ箱には、子レコードがあり、
 これを復元すると親子関係も保持されます

 
3.この操作終了後のごみ箱には、親レコードのみが
 あり(子レコードは消える)、これを復元すると
 親レコードのみ復元されます
 子レコードは復元もできなくなりました


※ 開発者コンソールでSOQLでクエリを投げると、
 2の操作以後は検索結果に表示されませんでした






0 件のコメント:

コメントを投稿