What is External ID in Salesforce?
You are integrating your organization’s Salesforce.com data with ERP (enterprise resource planning) systems such as accounting and manufacturing.
You are importing data and want to prevent the creation of duplicate objects.
If you are upserting an object that has a custom field with both the External ID and Unique attributes selected (a unique index), you do not need any special permissions, because the Unique attribute prevents the creation of duplicates. If you are upserting an object that has the External ID attribute selected but not the Unique attribute selected, (a non-unique index) your client application must have the permission “View All Data” to execute this call. Having this permission prevents the client application from using upsert() to insert an accidental duplicate record because it couldn’t see that the record existed.
Matching by external ID is case-insensitive only if the external ID field has the Unique attribute and the Treat “ABC” and “abc” as duplicate values (case insensitive)) option selected. These options are selected in the Salesforce.com user interface during field creation. If this is the case, “ABC123” is matched with “abc123.” Before performing an operation, if you have external ID fields without the case-insensitive option selected, review your external IDs for any values that would be matched if case was not considered. If such values exist, you may want to modify them to make them unique, or select the case-sensitive option for your external ID fields. For more information about field attributes, see “Custom Field Attributes” in the Salesforce.com online help.