salesforce || System.FinalException: Record is read-only Trigger.

news/2024/5/19 2:12:34 标签: salesforce, FinalException

以下是错误代码示范
会报错:System.FinalException: Record is read-only Trigger.

trigger MoneyTrigger on Money__c (after insert, after update) {
    Date startDay = Date.newInstance(2023,12,26);
	if(Trigger.isAfter && Trigger.isInsert){
    	for (Money__c moneys : Trigger.new){
     		moneys.totalDays__c = startDay.daysBetween(moneys.Date__c);
		}
    }
    if(Trigger.isAfter && Trigger.isUpdate){
        for (Money__c moneys : Trigger.new){
     		moneys.totalDays__c = startDay.daysBetween(moneys.Date__c);
		}
    }
}

原因分析:

想在trigger里面更新字段的话,只能在【before】里面进行
Trigger有下面2种:
1.Before:在数据保存进DB之前 更新记录/验证记录
2.After:访问系统设置的字段值(例如记录的 Id 或 LastModifiedDate 字段),并影响其他记录中的更改,例如登录到某表或触发异步事件。需要注意的是,被after trigger触发后的记录是只读的(它们虽然已经写入数据库但是并没有提交到数据库。)

解决方案:

trigger MoneyTrigger on Money__c (before insert, before update) {
    Date startDay = Date.newInstance(2023,12,26);
	if(Trigger.isBefore && Trigger.isInsert){
    	for (Money__c moneys : Trigger.new){
     		moneys.totalDays__c = startDay.daysBetween(moneys.Date__c);
		}
    }
    if(Trigger.isBefore && Trigger.isUpdate){
        for (Money__c moneys : Trigger.new){
     		moneys.totalDays__c = startDay.daysBetween(moneys.Date__c);
		}
    }
}

参考:
https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_triggers.htm


http://www.niftyadmin.cn/n/5424276.html

相关文章

RUST 每日一省:迭代器1

Iterator 迭代器指的是任何实现 std::iter::Iterator trait的值。这个Iterator trait的定义如下&#xff1a; trait Iterator {type Item;fn next(&mut self) -> Option<Self::Item>;... // 其他默认方法} Item 是迭代器产生值的类型。我们只需要实现一个方法——…

C++开发基础——IO操作与文件流

一&#xff0c;基础概念 C的IO操作是基于字节流&#xff0c;并且IO操作与设备无关&#xff0c;同一种IO操作可以在不同类型的设备上使用。 C的流是指流入/流出程序的字节序列&#xff0c;在输入操作中数据从外部设备(键盘&#xff0c;文件&#xff0c;网络等)流入程序&#x…

easyexcel实现导出excel文件到s3服务器

常见的做法一般是直接通过请求接口响应对象response把文件输出 /*** 导出列表** param request* param response*/Overridepublic void export(AuctionRequest request, HttpServletResponse response) throws IOException {Map<String, Object> queryMap Maps.newHashM…

Kafka消费者重平衡

「&#xff08;重平衡&#xff09;Rebalance本质上是一种协议&#xff0c;规定了一个Consumer Group下的所有Consumer如何达成一致&#xff0c;来分配订阅Topic的每个分区」。 比如某个Group下有20个Consumer实例&#xff0c;它订阅了一个具有100个分区的Topic。 正常情况下&…

ms office学习记录:Word㈤ 引用邮件审阅选项卡 对应配套作业㈥

⒈题注&#xff08;为图片、表格对象添加标签&#xff0c;可自动修正编号&#xff09; 插入题注&#xff1a;新建标签、编号&#xff08;勾选包含章节号的前提是已有多级列表&#xff09; 交叉引用&#xff1a;引用类型、引用内容&#xff08;仅标签和编号&#xff09;如有文…

WAServiceMainContext.js:2 ReferenceError: result is not defined

WAServiceMainContext.js:2 ReferenceError: result is not defined at success (index.js? [sm]:280) at Function.forEach.u.<computed> (WASubContext.js?twechat&s1710205354985&v2.16.1:2) at :22955/appservice/<api request success callback fun…

分布式微服务 - 3.降级熔断 - 3.Sentinel

分布式微服务 - 3.降级熔断 - 3.Sentinel 项目示例&#xff1a; 项目示例 - 3.降级熔断 - 2.Sentinel 内容提要&#xff1a; 下载启动注册、持久化、资源配置流控、热点、系统规则熔断、授权 文档&#xff1a; 官网官网文档github 下载启动 下载jar包在其所在目录中打开…

Web 常用的 扩展开发框架

当谈到提升浏览器功能和用户体验时&#xff0c;浏览器扩展成了一股强大的力量&#xff0c;备受用户青睐。在众多的Web扩展开发框架中&#xff0c;WXT和Plasmo凭借其丰富的工具和特性&#xff0c;以及简化的开发流程&#xff0c;成为开发者们的首选。在本文中&#xff0c;我们将…