How to make upsert in salesforce work instead of inserting new duplicate records?

234    Asked by DavidEdmunds in Salesforce , Asked on May 23, 2023
My Object Test__c has two lookup
Emp__c - 1st lookup
Score__c -2nd lookup
I have populated all the values.
upsert (new Test__c(emp__c = 'XXXX',score__c = '123')); upsert (new Test__c(emp__c = 'XXXX',score__c = '123'));
Does it create two records ? I guess it sounds silly ? But wanna check the clear idea behind the upsert ?
Thanks All....! I just completely understand that it is only based on the ID or External Id. I did an example with my test object. Working awesome...
External_Id__c - Is a text field with the external ID checked while creating a field.
I have a record with the same external id ie. Name = Test1, Exception = Ex1
PAK09_Test1__c ct2 = new PAK09_Test1__c(Name ='Test3', Exception__c='Ex3', External_Id__c='123'); database.upsert(ct2, PAK09_Test1__c.Fields.External_Id__c);
Existing record is updated with Name = Test3,Exception = Ex3.

Answered by Dipika Agarwal

From documentation:

The upsert in salesforce statement matches the sObjects with existing records by comparing values of one field. If you don’t specify a field when calling this statement, the upsert statement uses the sObject’s ID to match the sObject with existing records in Salesforce. Alternatively, you can specify a field to use for matching. For custom objects, specify a custom field marked as external ID. For standard objects, you can specify any field that has the idLookup property set to true. For example, the Email field of Contact or User has the idLookup property set.

Couple of points to remember:
If the key is not matched, a new object record is created.
If the key is matched once, the existing object record is updated.
If the key is matched multiple times, an error is generated and the object record is neither inserted or updated.
So it's quite clear how upsert statements work and what are configurable parameters. So in your case it's likely to create two records since there is no indexed field i.e. id or externalId to detect duplicate records.


Your Answer

Interviews

Parent Categories