You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Salesforce Apex触发器创建Account自动生成Contact报Expected '{'错如何解决

报错原因

1. 直接语法错误(触发Expected '{'报错)

Apex是大小写敏感的编程语言,代码中方法的修饰符Static首字母大写不符合Apex语法规范,正确的静态方法修饰符应为全小写的static。编译器识别到不符合预期的大写Static关键字后,无法正确匹配后续的方法定义结构,就会抛出期望遇到{但未匹配到的语法错误。

2. 隐含的业务逻辑错误(语法修复后运行仍会报错)

代码中手动给新建的Contact记录赋值Id = ac.Id是错误操作:

  • Salesforce插入sObject记录时,Id是系统自动生成的,不允许开发者在插入前手动指定Id值,语法修复后执行会抛出INVALID_FIELD_FOR_INSERT_UPDATE类型的运行时错误。
  • 如需关联Contact和Account,应该给Contact的AccountId字段赋值为Account的Id,而非直接覆盖Contact自身的Id。

修复方案

修正后的代码如下:

public class CallCreateNewContactTrigger {
    // 大写的Static改为小写static
    public static void CreateContactMethod(List<Account> accList){
        List<Contact> conList= new List<Contact>();
        for(Account ac : accList){
            Contact cc = new Contact();
            cc.LastName = ac.Name;
            // 用AccountId关联所属账户,不要给Contact自身的Id赋值
            cc.AccountId = ac.Id;
            conList.add(cc);
        }
        insert conList;
    }
}

额外注意:配套的触发器需要绑定Account的after insert事件,不要使用before insert事件,因为before insert阶段Account的Id还未生成,赋值给Contact.AccountId会是空值。

内容的提问来源于stack exchange,提问作者Kanthi Kumar Tippani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 15:36:05