ポリモーフィックフィールド
ポリモーフィックフィールドの操作
ポリモーフィックフィールドとは、関連オブジェクトを複数の異なる種別のオブジェクトのいずれかにできるフィールドです。 例えば、タスクのWhoID フィールドにはContact またはLead のいずれかを使用できます。フィールドがポリモーフィックかどうかを調べるには、sys_tablecolumns をクエリしてIsPolymorphic カラムをチェックします。ポリモーフィックフィールドに関連する2つの擬似カラムがあります。
- {PolymorphicField}Type カラム
- {PolymorphicField}ExternalID カラム
擬似カラムは、ポリモーフィックフィールドを効率的に扱うために使用されます。
Polymorphic Field Type
{PolymorphicField}type は、ポリモーフィックフィールドがリレーションするオブジェクトの種別を指定する抽出条件として使用できます。例えば、Owner のリレーションで種別がUser のタスクのみをクエリするには、以下のクエリを使用します。SELECT * FROM Task WHERE OwnerIDType = 'User'INSERT/UPDATE/UPSERT ステートメントでは、ポリモーフィックフィールドを直接使用するか、特定のオブジェクト種別のID を調べる代わりに{PolymorphicField}ExternalID を使用できます。例えば、あるタスクのWhoID を更新しようとする際、特定のContact に属するID を探す代わりに、取引先責任者の外部ID フィールドを参照として使用できます。 取引先責任者の外部ID が"ContactEmail__c" であるとします。以下を使う代わりに、
SELECT ID FROM Contact WHERE ContactEmail__c = '[email protected]' UPDATE Task SET WhoID = ID from first query以下を実行できます。
UPDATE Task SET WhoID='[email protected]', WhoIDType='Contact', WhoIDExternalID = 'ContactEmail__c'これは、このタスクのWhoID 値を、外部ID ContactEmail__c が[email protected] に等しい取引先責任者ID に設定するようにサービスに指示します。INSERT およびUPSERT ステートメントも同様です。