SFDC 复合主键的一般实现方法

我们都知道,Salesforce的每个Record都是只能一个主键ID,并且ID是添加时自动生成的。 并且这个ID很特殊,Salesforce通过算法,可以通过这个ID能知道这条记录是哪个Object的记录。 这个以后我们再讨论。

今天我主要想跟大家讲一下,如何在Salesforce里实现多个字段共同达成唯一索引。 首先Salesforce本身 Text字段是支持 Unique设置的

 但是不支持多个字段联合共同Unique。

解决方案

  1. 在Object中添加一个Text字段,勾选Unique设置的字段,Label,API参照名任意
  2. (可选)在Object中添加一个Formula(Text)字段,公式为想要实现复合Unique的字段用文本拼接,Label,API参照名任意
  3. 在创建时用Workflow Rule ,Process Builder,Flow Builder(Record Trigger),Apex Trigger(before insert)其中一种工具
  4. 将Formula(Text)字段的值(没添加的话就在这里拼接) 赋值 到 第一步创建的 Unique字段上即可
  5. 将公式字段和Unique字段从Page Layout上隐藏

这样就可以在添加记录时 实现类似复合字段Unique索引的效果

原理就是先用formula拼接复合主键,再用自动化工具来把复合主键值更新到设定好Unique的字段上,由于Unique字段不允许重复,所以重复的复合主键会插入失败。

例子,这里的支部Code(BranchCode__c)和年月(YearMonth__c) 两个共同构成主键,也就是要求支部Code(BranchCode__c)和年月(YearMonth__c)在Object里不能重复

我用 PK_Formula 字段来存放 支部Code(BranchCode__c)和年月(YearMonth__c) 拼接在一起后的值

BranchCode__c & YearMonth__c

 

支部コード-年月 是我设定的Unique Text字段

在添加时,我利用Process Builder,将 PK_Formula 字段的值赋值到 支部コード-年月 字段上

 

 

当我尝试登录一条同样支部Code和年月的记录时

 

 Error发生了,没有保存成功,这样就达成了重复复合主键check。后面可以将 PK_Formula, 支部コード-年月 字段从page layout上隐藏。

 

posted @ 2021-01-21 15:59  Victor-Wei  阅读(74)  评论(0编辑  收藏  举报