System.QueryException:记录当前不可用

时间:2017-02-03 20:18:36

标签: salesforce force.com

此异常通常在批处理运行或警报过快进入Salesforce实例时发生。在插入案例时,我们会尝试在插入案例之前锁定与案例相关联的联系人和帐户,以防止发生“UNABLE_TO_LOCK_ROW”异常。

这是一个确切的例外:

'System.QueryException:记录当前不可用:您尝试编辑的记录或其相关记录之一当前正由另一个用户修改。请再试一次。'

Class.Utility.DoCaseInsertion:第98行,第1列

我对'UNABLE_TO_LOCK_ROW'异常和'记录当前不可用'异常进行了大量研究,我似乎无法找到解决此问题的好方法。

我试图完成的是一个循环尝试插入10次,但我仍然得到“记录当前不可用”的异常。有没有人对此提出建议?

以下是代码:

Public static void DoCaseInsertion(case myCase) {
    try
    {
        insert myCase;
    }
    catch (System.DmlException ex)
    {
        boolean repeat = true;
        integer cnt = 0;
        while (repeat && cnt < 10) 
        {   
            try
            {
                repeat = false;
                List<Contact> contactList = [select id from Contact where id =: myCase.ContactId for update]; // Added for related contact to overcome the 'UNABLE_TO_LOCK_ROW issues'
                List<Account> accountList = [select id from Account where id =: myCase.AccountId for update]; // Added for related account to overcome the 'UNABLE_TO_LOCK_ROW issues'
                insert myCase;
            }
            catch (System.DmlException e)
            {
                repeat = true;
                cnt++;
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

当其他用户/进程对您尝试访问的特定记录进行冲突的修改时,基本上会发生这种情况。通常,它将在后台运行任何类型的批处理并锁定您尝试访问的特定记录(在您的帐户中)时发生。要解决此问题,您需要检查“帐户/案例”后台是否有任何预定的顶点类在运行,并查看是否可以做一些优化代码以避免行为冲突的事情。

相关问题