Same SObject Upsert Parent Lookup record using an external IdTrigger upsert questionsCustom Roll up Trigger Exception HandlingError: INVALID_FIELD, Cannot specify both an external ID reference and a salesforce idDatabase Class and DML in a transactionAdd dynamic lookup on Contact to sObject with external IdClear value in ID after failed upsertAggregate query has too many rows for direct assignment, use FOR loopCalling a Class from a Trigger (calls external service)Trying to insert to 2 different custom objects which is in a master-detail relationshipIllegal assignment from sObject to Id
Gofer work in exchange for Letter of Recommendation
Designing a prison for a telekinetic race
Same SObject Upsert Parent Lookup record using an external Id
Use of vor in this sentence
Why was ramjet fuel used as hydraulic fluid during Saturn V checkout?
Is "stainless" a bulk or a surface property of stainless steel?
Is there such a thing as too inconvenient?
iPad or iPhone doesn't charge until unlocked?
Are there reliable, formulaic ways to form chords on the guitar?
How do you call it when two celestial bodies come as close to each other as they will in their current orbits?
Starships without computers?
Do banks' profitability really suffer under low interest rates
When does The Truman Show take place?
How to use source_location in a variadic template function?
Lazy brainfuck programmer
Is it possible to get the arXiv ID of all papers being referenced by a specific arXiv paper?
Why should P.I be willing to write strong LOR even if that means losing a undergraduate from his/her lab?
What happened after the end of the Truman Show?
Align (multiline text)-nodes with tikzlibrary 'positioning'
Using は before 欲しい instead が
!I!n!s!e!r!t! !b!e!t!w!e!e!n!
Inset Square From a Rectangular Face
How do we test and determine if a USB cable+connector is version 2, 3.0 or 3.1?
What is the evidence on the danger of feeding whole blueberries and grapes to infants and toddlers?
Same SObject Upsert Parent Lookup record using an external Id
Trigger upsert questionsCustom Roll up Trigger Exception HandlingError: INVALID_FIELD, Cannot specify both an external ID reference and a salesforce idDatabase Class and DML in a transactionAdd dynamic lookup on Contact to sObject with external IdClear value in ID after failed upsertAggregate query has too many rows for direct assignment, use FOR loopCalling a Class from a Trigger (calls external service)Trying to insert to 2 different custom objects which is in a master-detail relationshipIllegal assignment from sObject to Id
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
Following this document - https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/langCon_apex_dml_foreign_keys.htm
But I'm trying to create a Parent and child records from the same sObject type on same Statement - is this possible ?
That's my code that fails:
MyCustomObject__c[] recordsToInsert = new List<MyCustomObject__c>();
// parent reference
MyCustomObject__c parentRef = new MyCustomObject__c();
parentRef.put('ExternalId__c',’2’);
// record to create
MyCustomObject__c child = new MyCustomObject__c();
child.put('Name','Test');
child.put('ExternalId__c','1');
child.put('ParentId__c', parentRef );
MyCustomObject__c parent = new MyCustomObject__c();
parent.put('ExternalId__c','2');
parent.put('Name','ParentTest');
recordsToInsert.add(parent);
recordsToInsert.add(child);
Database.SaveResult[] srList = Database.insert(recordsToInsert,true);
I get the following error :
Illegal assignment from ParentId__c to Id
What am I missing here in order to be able to upsert the ParentId__c lookup record based on external key ?
apex
add a comment |
Following this document - https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/langCon_apex_dml_foreign_keys.htm
But I'm trying to create a Parent and child records from the same sObject type on same Statement - is this possible ?
That's my code that fails:
MyCustomObject__c[] recordsToInsert = new List<MyCustomObject__c>();
// parent reference
MyCustomObject__c parentRef = new MyCustomObject__c();
parentRef.put('ExternalId__c',’2’);
// record to create
MyCustomObject__c child = new MyCustomObject__c();
child.put('Name','Test');
child.put('ExternalId__c','1');
child.put('ParentId__c', parentRef );
MyCustomObject__c parent = new MyCustomObject__c();
parent.put('ExternalId__c','2');
parent.put('Name','ParentTest');
recordsToInsert.add(parent);
recordsToInsert.add(child);
Database.SaveResult[] srList = Database.insert(recordsToInsert,true);
I get the following error :
Illegal assignment from ParentId__c to Id
What am I missing here in order to be able to upsert the ParentId__c lookup record based on external key ?
apex
apparently this doc says “You can't add a record that references another record of the same object type in the same call” - any workarounds ?? developer.salesforce.com/docs/atlas.en-us.220.0.api.meta/api/…
– sfdx bomb
8 hours ago
add a comment |
Following this document - https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/langCon_apex_dml_foreign_keys.htm
But I'm trying to create a Parent and child records from the same sObject type on same Statement - is this possible ?
That's my code that fails:
MyCustomObject__c[] recordsToInsert = new List<MyCustomObject__c>();
// parent reference
MyCustomObject__c parentRef = new MyCustomObject__c();
parentRef.put('ExternalId__c',’2’);
// record to create
MyCustomObject__c child = new MyCustomObject__c();
child.put('Name','Test');
child.put('ExternalId__c','1');
child.put('ParentId__c', parentRef );
MyCustomObject__c parent = new MyCustomObject__c();
parent.put('ExternalId__c','2');
parent.put('Name','ParentTest');
recordsToInsert.add(parent);
recordsToInsert.add(child);
Database.SaveResult[] srList = Database.insert(recordsToInsert,true);
I get the following error :
Illegal assignment from ParentId__c to Id
What am I missing here in order to be able to upsert the ParentId__c lookup record based on external key ?
apex
Following this document - https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/langCon_apex_dml_foreign_keys.htm
But I'm trying to create a Parent and child records from the same sObject type on same Statement - is this possible ?
That's my code that fails:
MyCustomObject__c[] recordsToInsert = new List<MyCustomObject__c>();
// parent reference
MyCustomObject__c parentRef = new MyCustomObject__c();
parentRef.put('ExternalId__c',’2’);
// record to create
MyCustomObject__c child = new MyCustomObject__c();
child.put('Name','Test');
child.put('ExternalId__c','1');
child.put('ParentId__c', parentRef );
MyCustomObject__c parent = new MyCustomObject__c();
parent.put('ExternalId__c','2');
parent.put('Name','ParentTest');
recordsToInsert.add(parent);
recordsToInsert.add(child);
Database.SaveResult[] srList = Database.insert(recordsToInsert,true);
I get the following error :
Illegal assignment from ParentId__c to Id
What am I missing here in order to be able to upsert the ParentId__c lookup record based on external key ?
apex
apex
edited 8 hours ago
sfdx bomb
asked 8 hours ago
sfdx bombsfdx bomb
7627 silver badges18 bronze badges
7627 silver badges18 bronze badges
apparently this doc says “You can't add a record that references another record of the same object type in the same call” - any workarounds ?? developer.salesforce.com/docs/atlas.en-us.220.0.api.meta/api/…
– sfdx bomb
8 hours ago
add a comment |
apparently this doc says “You can't add a record that references another record of the same object type in the same call” - any workarounds ?? developer.salesforce.com/docs/atlas.en-us.220.0.api.meta/api/…
– sfdx bomb
8 hours ago
apparently this doc says “You can't add a record that references another record of the same object type in the same call” - any workarounds ?? developer.salesforce.com/docs/atlas.en-us.220.0.api.meta/api/…
– sfdx bomb
8 hours ago
apparently this doc says “You can't add a record that references another record of the same object type in the same call” - any workarounds ?? developer.salesforce.com/docs/atlas.en-us.220.0.api.meta/api/…
– sfdx bomb
8 hours ago
add a comment |
1 Answer
1
active
oldest
votes
The original error, "Illegal assignment from ParentId__c to Id", is because you can't put an sObject into a field, but you could put it in to a relationship via putSObject
:
child.putsObject('ParentId__r', parentRef );
Note the use of the __r
notation. The ID is always __c
, the sObject it points to is __r
. For standard relationships, you drop the Id
. For example, Contact.AccountId is the Id field, Contact.Account is the relationship to an Account. However, the next error you'd get would have been:
Foreign key external ID: XXXXX not found for field ExternalId__c in entity MyCustomObject__c:
You need to insert the records one at a time, or relate them later. There is no "workaround" for this problem other than to use two DML statements. If this was a parent-detail situation (e.g. Account and Contact), then it would work correctly.
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "459"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f274029%2fsame-sobject-upsert-parent-lookup-record-using-an-external-id%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
The original error, "Illegal assignment from ParentId__c to Id", is because you can't put an sObject into a field, but you could put it in to a relationship via putSObject
:
child.putsObject('ParentId__r', parentRef );
Note the use of the __r
notation. The ID is always __c
, the sObject it points to is __r
. For standard relationships, you drop the Id
. For example, Contact.AccountId is the Id field, Contact.Account is the relationship to an Account. However, the next error you'd get would have been:
Foreign key external ID: XXXXX not found for field ExternalId__c in entity MyCustomObject__c:
You need to insert the records one at a time, or relate them later. There is no "workaround" for this problem other than to use two DML statements. If this was a parent-detail situation (e.g. Account and Contact), then it would work correctly.
add a comment |
The original error, "Illegal assignment from ParentId__c to Id", is because you can't put an sObject into a field, but you could put it in to a relationship via putSObject
:
child.putsObject('ParentId__r', parentRef );
Note the use of the __r
notation. The ID is always __c
, the sObject it points to is __r
. For standard relationships, you drop the Id
. For example, Contact.AccountId is the Id field, Contact.Account is the relationship to an Account. However, the next error you'd get would have been:
Foreign key external ID: XXXXX not found for field ExternalId__c in entity MyCustomObject__c:
You need to insert the records one at a time, or relate them later. There is no "workaround" for this problem other than to use two DML statements. If this was a parent-detail situation (e.g. Account and Contact), then it would work correctly.
add a comment |
The original error, "Illegal assignment from ParentId__c to Id", is because you can't put an sObject into a field, but you could put it in to a relationship via putSObject
:
child.putsObject('ParentId__r', parentRef );
Note the use of the __r
notation. The ID is always __c
, the sObject it points to is __r
. For standard relationships, you drop the Id
. For example, Contact.AccountId is the Id field, Contact.Account is the relationship to an Account. However, the next error you'd get would have been:
Foreign key external ID: XXXXX not found for field ExternalId__c in entity MyCustomObject__c:
You need to insert the records one at a time, or relate them later. There is no "workaround" for this problem other than to use two DML statements. If this was a parent-detail situation (e.g. Account and Contact), then it would work correctly.
The original error, "Illegal assignment from ParentId__c to Id", is because you can't put an sObject into a field, but you could put it in to a relationship via putSObject
:
child.putsObject('ParentId__r', parentRef );
Note the use of the __r
notation. The ID is always __c
, the sObject it points to is __r
. For standard relationships, you drop the Id
. For example, Contact.AccountId is the Id field, Contact.Account is the relationship to an Account. However, the next error you'd get would have been:
Foreign key external ID: XXXXX not found for field ExternalId__c in entity MyCustomObject__c:
You need to insert the records one at a time, or relate them later. There is no "workaround" for this problem other than to use two DML statements. If this was a parent-detail situation (e.g. Account and Contact), then it would work correctly.
edited 6 hours ago
answered 6 hours ago
sfdcfoxsfdcfox
283k14 gold badges231 silver badges483 bronze badges
283k14 gold badges231 silver badges483 bronze badges
add a comment |
add a comment |
Thanks for contributing an answer to Salesforce Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f274029%2fsame-sobject-upsert-parent-lookup-record-using-an-external-id%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
apparently this doc says “You can't add a record that references another record of the same object type in the same call” - any workarounds ?? developer.salesforce.com/docs/atlas.en-us.220.0.api.meta/api/…
– sfdx bomb
8 hours ago