Database.SaveResult - how to get the Id of the record where Update failed?

  • I am using Database.SaveResult and Database.update(..., false) for the very first time and ask myself how to get the Id of the record where a dml has failed.

    I expected Database.SaveResult.getId()` to give me that answer but NO...it is empty when the dml failed.

    Help ;-)!

  • We can use List index Property to get the Id of the failed record .The Index of the List which we are updating and also the result set retrieved has the same index .Using the above property for our advantage we can draft a pseduo code as below

    List<Database.SaveResult> updateResults = Database.upsert(arudate, false);
    for(Integer i=0;i<updateResults.size();i++){
        if (updateResults.get(i).isSuccess()){
            updateResults.get(i).getId();
    
        }else if (!updateResults.get(i).isSuccess()){
            // DML operation failed
            Database.Error error = updateResults.get(i).getErrors().get(0);
            String failedDML = error.getMessage();
            arudate.get(i);//failed record from the list
            system.debug('Failed ID'+arudate.get(i).Id);
         }
    
    }
    

    does anyone understand why the failed ones don't include the ID?

    because salesforce failed to properly implement the function

    thanks it works, and if you have Map can use same principle, but you just need convert map into list "accMap.values().get(i).Id;"

    Would you please post a link to the official documentation that mentions this? Thanks!

License under CC-BY-SA with attribution


Content dated before 7/24/2021 11:53 AM

Tags used