Tuesday, May 20, 2014

How Parent and Child record can be inserted in Single Statement : Use of External id field

Date dt = Date.today().addDays(7);
2Opportunity newOpportunity = new Opportunity(Name = 'shivasoft', StageName ='Prospecting', CloseDate = dt);
3
4/*
5Create the parent reference. Used only for foreign key reference  and doesn't contain any other fields. If we provide any other value it will give following error
6
7System.DmlException: Insert failed. First exception on row 1; first error: INVALID_FIELD, More than 1 field provided in an external foreign key reference in entity: Account: []
8*/
9
10Account accountReference = new Account(MyExtID__c = 'SHIVA1234567');
11newOpportunity.Account = accountReference;
12
13//  Create the Account object to insert.  Same as above but has Name field.  Used for the insert.
14Account parentAccount = new Account(Name = 'Shiva', MyExtID__c = 'SHIVA1234567');
15
16Database.SaveResult[]
17    results = Database.insert(new SObject[] {  parentAccount, newOpportunity });
Note : parent object should be included before the child object in list otherwise you will get following error : 
 INVALID_FIELD, Foreign key external ID: SHIVA1234567 not found for field  MyExtID__c  in entity Account: []

No comments:

Post a Comment