Skip to main content
4 of 6
added 66 characters in body

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;
        
        try{
            Test.startTest();
                delete accRecord;
            Test.stopTest();
        }catch(DMLexception e){
            System.assertEquals(true, e.getMessage().contains('Account Cannot be deleted'),'Account Cannot be deleted');                       
        }
        System.assertEquals(false, 'An Error was expected');
    }
}