2016-01-20 62 views
0

您好我曾嘗試下面的代碼如何通過觸發器的自定義對象在Salesforce中插入和更新記錄

trigger CreateRecord on Account (before insert,before update) { 
List<Account> CreateAcc = new List<Account>(); 
    For(Account acc:trigger.new) 
     { 
     acc.Name='abc'; 
     CreateAcc.add(acc); 
     } 
    insert CreateAcc; 
} 

,但上面的代碼創建了以下錯誤: 查看下文的所有錯誤信息糾正你數據。 Apex觸發CreateRecord引起意外異常,請聯繫您的管理員:CreateRecord:執行BeforeInsert引起:System.SObjectException:DML語句無法對trigger.new或trigger.old進行操作:Trigger.CreateRecord:第9行第1列enter code here

請幫我通過代碼,因爲我錯了。

+0

SO使用[代碼格式化語法](https://stackoverflow.com/help/formatting)。請編輯您的問題中的代碼。 – hazardous

回答

0

你爲什麼不嘗試從控制器中調用一個方法或函數,而不是觸發你的東西?

在我結束,我會做這樣的..

創建一個方法公用控制器,將插入一條記錄

public class UtilityController 
{ 
    @future (callout = true) 
    public static void CreateRecord() 
    { 
     //Put your stuffs here... 
    } 
} 

然後在扳機,只需要調用該方法

trigger Account_CreateNewRecord on Account (before insert,before update) { 
    Utility.CreateRecord(); 
} 

請注意,你只能從另一個類調用的方法/函數,如果它有一個未來anotation。

我經常使用像這樣的觸發器來調用一個方法或之前/之後的語句。 這種方式你觸發的只是當它被觸發時專注於執行一個方法/函數。 有關頂點觸發器的更多信息,請參閱Apex Developers Guide

相關問題