Skip to main content
6 of 6
added 22 characters in body
Eric
  • 54.4k
  • 11
  • 104
  • 196

In order to prevent delete transaction to be committed to DB, you need to addError to record, that should not be deleted

trigger PreventAccountDelete on Account (before delete) {

    for(Account acc : trigger.old){
        acc.addError('Account Cannot be deleted');
    }
}

to test this behavior run the following unit-test

@isTest
private class PreventAccountDeleteTest {
    
    @isTest
    static void testPreventAccDel(){
        Account accRecord = new Account(name='testAccount');
        insert accRecord;
            
        Test.startTest();
        
        try{
            delete accRecord;
            System.assertEquals(false, 'An Error was expected');
        }catch(DMLexception e){
            System.assertEquals(true, e.getMessage().contains('Account Cannot be deleted'),'Account Cannot be deleted');                       
        }
        
        Test.stopTest();

    }
}