こんにちは、管理人の@Salesforce.Zです。
主従関係ってもう十分、 ほとんどのcoder の頭に定着したと思います。
しかし、これが知っていますか。所有者の話。子sObjectに所有者項目がないんですよ。
この記事で、所有者と権限の話をします。
Contents
主従関係とは

※実はSalesforceでは、参照関係だが、この記事で、主従とし話します
データ構成上で、互いにアクセスするようにするため 、主従関係は二つのオブジェクトをリンクさせる一つの種類です。親子関係とも言える。
Contactのデータを見るときに、関連するデータも見たいことがよくある。この時にデータとデータの関連性がないと、見るようがない。
リレーションの一つ種類ですよ。
主従関係により、できること(ピックアップレベル)
- 主レコードを 削除すると、関連する従レコードも自動的に消えますよ
- 従レコードのデータを登録する時に、主レコード項目が必須になる
- 主レコードに関連する従レコードの集計が自動的にできるようになる(積み上げ集計項目より)
主従関係の所有者
カスタムオブジェクトが主従関係の従側である場合
従オブジェクトのデータの所有権は主オブジェクト (または主従関係が 2 つある場合にはプライマリ主オブジェクト) に移るため、 従オブジェクトのデータの[所有者] 項目は削除されます。 つまり、オブジェク設定にはないです。
主従関係の権限
主従関係の従カスタムオブジェクトに
・共有ルール
・共有の直接設定
・キュー
を設定しようとする場合があるかと思います。残念。共有ルール、共有の直接設定、またはキューには [所有者] 項目が必要なため、設定できません。
※すでにデータを持っているカスタムオブジェクトに主従関係を作成することはできません。
クエリでのデータアクセス
主従関係も参照関係も、親であるオブジェクが主、子であるオブジェクが従と考えます。
従から主へのアクセス(ドット表記)
標準オブジェクトの場合
1 |
SELECT Id, Name, Account.Id, Account.Name FROM Contact |
カスタムオブジェクトの場合
1 |
SELECT Id, Name, ParentObj__c, ParentObj__r.name FROM ChildObj__c |
主から従へのアクセス(サブクエリ)
標準オブジェクトの場合
取引先責任者(従側)に取引先名項目があります。取引先名項目の詳細設定ページに
子リレーション名があり、そこに「Contacts」と記載していますよね?Salesforceにログインして、確認すれば分かりやすいです。

サブクエリで、親から、子にアクセスする場合、サブクエリのFROMは子リレーション名になります。
1 |
SELECT Id, Name, (SELECT Id FROM Contacts) FROM Account |
カスタムオブジェクトの場合
カスタムオブジェクトの場合も子オブジェクの親項目に確認し、子リレーション名が何かを確認し、子リレーション名に「_」2個と「r」でカスタムオブジェクトの場合のサブクエリのFROMになります。
1 |
SELECT Id, Name, (SELECT Id, Name FROM [子リレーション名]__r) FROM ParentObj__c |