防止记录被删除

时间:2019-09-10 15:44:37

标签: triggers salesforce apex

如果对象“ A”的阶段字段具有“已完成”作为值,则我试图防止删除作为对象“ A”的子级的记录。

如何使用触发器满足条件? 如果触发器无法做到这一点,那么还有更好的方法吗? 预先谢谢你。

2 个答案:

答案 0 :(得分:0)

如果该关系是主从关系,则可以对主对象执行汇总汇总和验证规则,例如ISPICKVAL(Stage__c, 'Completed') && PRIORVALUE(Rollup__c) > Rollup__c

如果只是查找-在子对象上触发。验证规则不会在要删除的记录上触发。

这样的事情(可能有语法错误,但只是为了让您理解)

trigger ObjectATrigger on ObjectA__c (before delete){

    Map<Id, Parent__c> parents = new Map<Id, Parent__c>([SELECT Id
        FROM Parent__c 
        WHERE Stage__c = 'Completed' 
            AND Id IN (SELECT Parent__c FROM ObjectA__c WHERE Id IN :trigger.old)]);

    for(ObjectA__c o : trigger.old){
        if(parents.containsKey(o.Parent__c)){
            o.addError('Nice try');
        }
    }
}

答案 1 :(得分:0)

很抱歉如此模棱两可地提出问题。实际上,我很想知道如果“文件”对象的相关父级的状态字段值设置为“已完成”,则可以防止插入/更新/删除。答案是利用ContentDocument和ContentDocumentLink上的触发器。谢谢!