Trigger中不通过soql查询记录类型的开发名称
应用场景
在Trigger中,我们有时候会需要判断当前记录的记录类型。在Trigger的上下文中,记录有关类型的数据只有一个 RecordTypeId ,而在开发规约中,通常并不允许通过RecordTypeId来判断类型,原因大概有:
- RecordTypeId会随着环境(Sandbox, Production …) 改变
- 用RecordTypeId判断属于硬编码(hardcode)
因此,在项目开发中会用定义RecordTypeInfo的DeveloperName来判断类型。但是与之而来的问题是,如果通过Soql的方式,用RecordTypeId取DeveloperName,会在for循环内触发上限限制:
For (Record__c r : Trigger.New) {
String developerName = [Select Id, Name, DeveloperName from RecordType WHERE Id = :r.RecordTypeId];
// actions...