Triggers 如何在salesforce的自定义对象中通过触发器插入和更新记录
嗨,我试过下面的代码Triggers 如何在salesforce的自定义对象中通过触发器插入和更新记录,triggers,Triggers,嗨,我试过下面的代码 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 Creat
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;
}
触发帐户上的CreateRecord(插入前、更新前){
List CreateAcc=new List();
对于(科目科目:触发器新)
{
acc.Name='abc';
CreateAcc.add(acc);
}
插入CreateAcc;
}
但是上面的代码正在创建以下错误:
查看下面的所有错误消息以更正数据。
Apex trigger CreateRecord导致意外异常,请与管理员联系:CreateRecord:执行BeforeInsert导致:System.SObjectException:DML语句无法对trigger.new或trigger.old:trigger.CreateRecord:第9行第1列在此处输入代码
请帮我解释一下我的错误所在。为什么不尝试从控制器调用方法或函数,而不是将您的内容放入触发器 就我而言,我会这样做 使用将插入记录的方法创建实用程序控制器
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触发器的更多信息,请参阅。删除末尾的update DML语句。通过使用“before”触发器修改trigger.new对象,您无需显式执行更新,只需插入DML语句。当触发器结束时,它将在您修改值时隐式更新或插入数据
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; removed this line.
}
触发帐户上的CreateRecord(插入前、更新前){
List CreateAcc=new List();
对于(科目科目:触发器新)
{
acc.Name='abc';
CreateAcc.add(acc);
}
//插入CreateAcc;删除此行。
}
因此使用了一个。请编辑问题中的代码。