// Try to save a duplicate account Account duplicateAccount = new Account(Name='Acme', BillingCity='San Francisco'); Database.SaveResult sr = Database.insert(duplicateAccount, false); if (!sr.isSuccess()) { // Insertion failed due to duplicate detected for(Database.Error duplicateError : sr.getErrors()){ Datacloud.DuplicateResult duplicateResult = ((Database.DuplicateError)duplicateError).getDuplicateResult(); System.debug('Duplicate records have been detected by ' + duplicateResult.getDuplicateRule()); System.debug(duplicateResult.getErrorMessage()); } // If the duplicate rule is an alert rule, we can try to bypass it Database.DMLOptions dml = new Database.DMLOptions(); dml.DuplicateRuleHeader.AllowSave = true; Database.SaveResult sr2 = Database.insert(duplicateAccount, dml); if (sr2.isSuccess()) { System.debug('Duplicate account has been inserted in Salesforce!'); } }
The following are methods for DuplicateError.
public Datacloud.DuplicateResult getDuplicateResult()
This example shows the code used to get the possible duplicates and related match information after saving a new contact. This code is part of a custom application that implements duplicate management when users add a contact. See DuplicateResult Class to check out the entire sample applicaton.
Datacloud.DuplicateResult duplicateResult = duplicateError.getDuplicateResult();
public List<String> getFields()
Type: List<String>