---
schema_version: "1"
id: 1bb2d61d67147c93a0a4d64b00ea83a96e789d8b4c4e965b493fe14b53c6b19d
title: DuplicateError Class
collection: legacydeveloper
version: current
locale: en-us
portal_url: https://docs.salesforce.com/legacydeveloper/current/en-us/apexref/apex_class_Database_DuplicateError.md
canonical_url: https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_class_Database_DuplicateError.htm
source_site: developer.salesforce.com
content_type: documentation
content_hash: 8dd52ce5a86f7bc6fa21924f715fcfc390cb4dc767d34172aa61aa1dd682cc4c
description: Contains information about an error that occurred when an attempt was made to save a duplicate record. Use if your organization has set up duplicate rules, which are part of the Duplicate Management feature.Returns the details of a duplicate rule and duplicate records found by the duplicate rule. Returns an array of one or more field names. Identifies which fields in the object, if any, affected the error condition.Returns the error message text.Returns a code that characterizes the error.
---
# DuplicateError Class

Contains information about an error that occurred when an attempt was made to save a duplicate record. Use if your organization has set up duplicate rules, which are part of the Duplicate Management feature.

## Namespace

[Database](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_namespace_Database.htm "The Database namespace provides classes used with DML operations.")

## Example

When you try to save a record that’s identified as a duplicate record by a duplicate rule, you’ll receive a duplicate error. If the duplicate rule contains the Allow action, an attempt will be made to bypass the error.

// 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!');
	}
}

- **[DuplicateError Methods](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_class_Database_DuplicateError.htm#apex_Database_DuplicateError_methods)**

#### See Also

- [SaveResult Class](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_methods_system_database_saveresult.htm#apex_methods_system_database_saveresult "The result of an insert or update DML operation returned by a Database method.")
- [DuplicateResult Class](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_class_Datacloud_DuplicateResult.htm#apex_class_Datacloud_DuplicateResult "Represents the details of a duplicate rule that detected duplicate records and information about those duplicate records.")
- [Error Class](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_methods_system_database_error.htm#apex_methods_system_database_error "Represents information about an error that occurred during a DML operation when using a Database method.")

## DuplicateError Methods

The following are methods for DuplicateError.

- **[getDuplicateResult()](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_class_Database_DuplicateError.htm#apex_Database_DuplicateError_getDuplicateResult)**  
    Returns the details of a duplicate rule and duplicate records found by the duplicate rule.
- **[getFields()](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_class_Database_DuplicateError.htm#apex_Database_DuplicateError_getFields)**  
    Returns an array of one or more field names. Identifies which fields in the object, if any, affected the error condition.
- **[getMessage()](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_class_Database_DuplicateError.htm#apex_Database_DuplicateError_getMessage)**  
    Returns the error message text.
- **[getStatusCode()](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_class_Database_DuplicateError.htm#apex_Database_DuplicateError_getStatusCode)**  
    Returns a code that characterizes the error.

### getDuplicateResult()

Returns the details of a duplicate rule and duplicate records found by the duplicate rule.

#### Signature

public Datacloud.DuplicateResult getDuplicateResult()

#### Return Value

Type: [Datacloud.DuplicateResult](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_class_Datacloud_DuplicateResult.htm#apex_class_Datacloud_DuplicateResult "Represents the details of a duplicate rule that detected duplicate records and information about those duplicate records.")

#### Example

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](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_class_Datacloud_DuplicateResult.htm#apex_class_Datacloud_DuplicateResult "Represents the details of a duplicate rule that detected duplicate records and information about those duplicate records.") to check out the entire sample applicaton.

Datacloud.DuplicateResult duplicateResult = 
                            duplicateError.getDuplicateResult();

### getFields()

Returns an array of one or more field names. Identifies which fields in the object, if any, affected the error condition.

#### Signature

public List<String\> getFields()

#### Return Value

Type: List<[String](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_methods_system_string.htm#apex_methods_system_string "Contains methods for the String primitive data type.")\>

### getMessage()

Returns the error message text.

#### Signature

public String getMessage()

#### Return Value

Type: [String](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_methods_system_string.htm#apex_methods_system_string "Contains methods for the String primitive data type.")

### getStatusCode()

Returns a code that characterizes the error.

#### Signature

public StatusCode getStatusCode()

#### Return Value

Type: [StatusCode](https://developer.salesforce.com/docs/atlas.en-us.264.0.apexcode.meta/apexcode/langCon_apex_enums.htm)