Custom object for logging
DML_Log__c
with fields:
SObjectType__c
(type = Text)
Name__c
(type = Text)
ID__c
(type = text)
RecordTypeId__c
(type = Text)
Utility method
public static void logDmlDelete(Sobject[] sObjList) {
DML_Log__c[] logInsList = new List<DML_Log__c>();
for (Sobject sobj : sobjList)
logInsList.add(new DML_Log__c(
sobjectType__c = sobj.getSobjectType().getDescribe().getName(),
name__c = (String) sobj.get('name'),
id__c = (String) sobj.get('ID'),
recordtypeId__c = sobj.getSobjectType().getDescribe().getRecordTypeInfos().size() <= 1 // master recordtype will exist in describe even if no others
? null
: (String) sobj.get('recordtypeId')
));
insert logInsList;
}
Trigger on Foo__c
trigger fooDelete on foo__c on (after delete) {
... other stuff
Util.logDmlDelete(Trigger.old);
}
Notes:
- Assumes that the sobject has a Name field
- Logs only the name field and sobject type; implicitly created by user = user doing the deletes
after delete
trigger do DML to some customLog__c
object using the values inTrigger.old
– cropredy Apr 26 '16 at 0:53trigger.old
– cropredy Apr 26 '16 at 0:56