如何创建引用两个查询的验证规则

时间:2019-05-08 09:14:22

标签: salesforce validationrules

我想创建一个验证规则或类似规则,以控制是否已存在具有相同两个查找值的记录,即开始日期必须是前一条记录的结束日期之后的一天。 每个查询共有28个组合,因此A-b,c,d,e,f,g。 B -a,c,d,e,g,g等

与另一个字段之间也存在主从关系,对于上述关系,该字段必须具有相同的值。

我正在努力制定规则。

1 个答案:

答案 0 :(得分:0)

这是触发器的作用示意图

trigger YourTrigger on ObjectWithLookups__c(before insert) {
    Set<Id> idsForLookupA = new Set<Id>();
    Set<Id> idsForLookipB = new Set<Id>();

    for (ObjectWithLookups__c record : Trigger.new) {
        idsForLookupA.add(record.LookupA);
        idsForLookupB.add(record.LookupB);
    }
    List<ObjectWIthLookups__c> existingRecords = [
        SELECT Id, LookupA, LookupB
        FROM ObjectWithLookups
        WHERE LookupA IN :idsForLookupA
        AND LookupB IN :idsForLookupB
    ];
    Set<String> uniquePairs = new Set<String>();
    for (ObjectWithLookups__c existingRecord : existingRecords) {
        uniquePairs.add(existingRecord.LookupA + '-' + existingRecord.LookupB);
    }
    for (ObjectWithLookup__c newRecord : Trigger.new) {
        if (uniquePairs.contains(newRecord.LookupA + '-' + newRecord.LookupB)) {
            newRecord.addError('This combination already exists');
        }
    }
}

您必须针对您的对象/字段对其进行修改,这也应该为f ollow the trigger/handler pattern