You need to sign in to do that
Don't have an account?
TEJA M 19
optimized DML operation from database.saveresult
Hi All,
I m trying to delete from a temperory object from database.saveresult. after successful process i am getting the ids and querying records and from quired records I am taking conact ids and entitlement ids and then querying based on the ids and deleting those records.
Is there any optimized way that i can delete records without qureying from database because i have the ids for both temporary object and entilements here.
if(contEntToInsert != null && contEntToInsert.size()>0) {
Database.SaveResult[] conEntList = Database.insert(contEntToInsert,false);
System.debug('conEntList------------>'+conEntList);
integer index = 0;
set<id> CONENTID = new set<id>();
for (Database.SaveResult sr : conEntList){
if(sr.isSuccess()){
//set<id> CONENTID = new set<id>();
CONENTID.add(sr.getId());
system.debug('sr.getId()=======>' +sr.getId());
}
}
List<Core_Contact_Entitlement__c> successConEntList = [SELECT id,Core_Contact_Id__c, Core_Entitlement_Id__c
from Core_Contact_Entitlement__c where id IN: CONENTID];
system.debug('successConEntList'+ successConEntList);
List<id> contactids = new List<id>();
List<id> contEntitids = new List<id>();
for(Core_Contact_Entitlement__c conEnt: successConEntList){
contactids.add(conEnt.Core_Contact_Id__c);
contEntitids.add(conEnt.Core_Entitlement_Id__c);
}
system.debug('contactids'+ contactids);
system.debug('contEntitids' + contEntitids);
List<PRM_Batch_Entitlement__c> batchEntitlementtoDeleteList =[select id,PRM_Contact_Id__c,PRM_Entitlement_Id__c
from PRM_Batch_Entitlement__c where PRM_Contact_Id__c
IN: contactids AND PRM_Entitlement_Id__c IN:contEntitids];
system.debug('batchEntitlementtoDeleteList' + batchEntitlementtoDeleteList);
delete batchEntitlementtoDeleteList;
I m trying to delete from a temperory object from database.saveresult. after successful process i am getting the ids and querying records and from quired records I am taking conact ids and entitlement ids and then querying based on the ids and deleting those records.
Is there any optimized way that i can delete records without qureying from database because i have the ids for both temporary object and entilements here.
if(contEntToInsert != null && contEntToInsert.size()>0) {
Database.SaveResult[] conEntList = Database.insert(contEntToInsert,false);
System.debug('conEntList------------>'+conEntList);
integer index = 0;
set<id> CONENTID = new set<id>();
for (Database.SaveResult sr : conEntList){
if(sr.isSuccess()){
//set<id> CONENTID = new set<id>();
CONENTID.add(sr.getId());
system.debug('sr.getId()=======>' +sr.getId());
}
}
List<Core_Contact_Entitlement__c> successConEntList = [SELECT id,Core_Contact_Id__c, Core_Entitlement_Id__c
from Core_Contact_Entitlement__c where id IN: CONENTID];
system.debug('successConEntList'+ successConEntList);
List<id> contactids = new List<id>();
List<id> contEntitids = new List<id>();
for(Core_Contact_Entitlement__c conEnt: successConEntList){
contactids.add(conEnt.Core_Contact_Id__c);
contEntitids.add(conEnt.Core_Entitlement_Id__c);
}
system.debug('contactids'+ contactids);
system.debug('contEntitids' + contEntitids);
List<PRM_Batch_Entitlement__c> batchEntitlementtoDeleteList =[select id,PRM_Contact_Id__c,PRM_Entitlement_Id__c
from PRM_Batch_Entitlement__c where PRM_Contact_Id__c
IN: contactids AND PRM_Entitlement_Id__c IN:contEntitids];
system.debug('batchEntitlementtoDeleteList' + batchEntitlementtoDeleteList);
delete batchEntitlementtoDeleteList;
From your question and code I understand that after the successful insertion you want to carry out the delete operation. I guess the following will be an optimized one. These two (Contact_Id__c, Core_Entitlement_Id__c) are lookup fields and I guess these will have values before in contEntToInsert list doing performing insert.
I hope the answer is helpful for you.
Regards
Karthik