【问题标题】:Trigger to prevent duplicate record names in salesforce触发器以防止 Salesforce 中的重复记录名称
【发布时间】:2012-01-30 04:59:34
【问题描述】:

我需要防止输入重复的名称。需要使用触发器来施加此限制。我想知道如何限制 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?

【问题讨论】:

    标签: salesforce apex-code


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      您可以将 addError 与单个记录一起使用,然后这些记录应显示在数据加载器的报告中,但如果您想停止所有内容,那么您也可以抛出异常。

      public class NamingException extends Exception {};
      
      throw new NamingException('Found duplicate name');
      

      【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2015-07-07
        • 2013-10-12
        • 1970-01-01
        • 1970-01-01
        • 2016-07-10
        • 2015-12-04
        • 1970-01-01
        • 2015-08-23
        • 1970-01-01
        相关资源
        最近更新 更多