Activity Forums Salesforce® Discussions How can we hard delete a record using a Salesforce Apex class by code?

  • Avnish Yadav

    Member
    July 31, 2018 at 1:11 pm

    Hi Madhulika,

    Hard delete is done by using DataBase.emptyRecycleBin method in the Batch class. Create a sample Batch class as mentioned below and use DataBase.emptyRecycleBin method in the Batch class.

    global class BatchDeletion implements Database.Batchable<sObject>, Schedulable
    {
    global BatchDeletion()
    {
    //constuctor
    }

    global Database.QueryLocator start(Database.BatchableContext bc)
    {
    //query to return all expired Case Share records
    return Database.getQueryLocator([Select id from Account where Name='Test Account12']);
    }

    global void execute(SchedulableContext sc)
    {
    //execute the batch
    BatchDeletion deleteCS = new BatchDeletion();
    ID batchprocessid = Database.executeBatch(deleteCS);
    }

    global void execute(Database.BatchableContext BC, list<sObject> scope)
    {
    System.debug('## deleting '+scope.size()+' case share recs');

    //delete list of expired Case Share records
    delete scope;
    Database.emptyRecycleBin(scope);
    }

    global void finish(Database.BatchableContext BC)
    {
    //no post processing
    /* System.debug('## Batch Job Finished ##');
    UpdateAccountFields m = new UpdateAccountFields ();
    String sch = '20 30 8 10 2 ?';
    system.schedule('Merge Job', sch, m);*/

    }
    }

    Hope this will help you.

    Thanks.

  • shariq

    Member
    September 17, 2018 at 11:54 pm

    Hi,

    We can hard delete record or list of records using emptyRecycleBin() function in apex. Pass the record or record list to emptyRecycleBin() to delete it from Recycle Bin.
    Contact con = new Contact(Id = ’09k110000O5abc’);
    Database.emptyRecycleBin(con);

    Note: The DML operation datatbase.emptyRecycleBin() is limited to 200 items.

    Hope this helps.

Log In to reply.

Popular Salesforce Blogs

Popular Salesforce Videos