触发以防止salesforce中的重复记录名称

时间:2012-01-30 04:59:35

标签: salesforce apex-code

我需要防止输入重复的名称。需要使用触发器施加此限制。我想知道如何限制DML操作的发生。不确定在批量化代码中使用.addError。

 Set<string> Seta= new Set<string>();
 for(oj__c o:trigger.new)
 {
   Seta.add(c.name);
 }

 List<oj__c> listoj= new List<oj__c>();
 listoj=[select id from oj__c where name in :Seta]
 if listoj.size()>0
 trigger.new.adderror('Cannot have duplicate name');// i know this line is wrong. How can i stop the DML statement from excuting?

3 个答案:

答案 0 :(得分:2)

可以在这里找到我所寻找的一个很好的参考。

http://www.salesforce.com/docs/developer/cookbook/Content/apex_dedupe.htm

答案 1 :(得分:1)

您可以将addError与单个记录一起使用,然后在dataloader中的报告中显示它们,但是如果您想要停止它的所有内容,那么您也可以抛出异常。

public class NamingException extends Exception {};

throw new NamingException('Found duplicate name');

答案 2 :(得分:0)

您的代码有一个错误,因为它不会在当前批次中发现欺骗,例如一个名为5行的API插入将通过。

更简单的方法是,只需让触发器将名称字段复制到自定义字段,然后在自定义字段定义中将其设置为唯一。