Salesforce中的记录(record)有不同的上下文和状态,这可能导致在某些情况下记录变为“只读”(read-only)。这通常是为了维护数据的完整性和防止不良的数据修改。以下是一些可能导致记录变为只读状态的情况:
-
事务控制: Salesforce使用事务控制来确保数据的一致性。在同一事务中,如果某个记录被标记为只读,那么就不能在该事务中再次进行修改。
-
触发器执行上下文: 在触发器执行上下文中,记录可能被标记为只读。这是为了防止在触发器中对记录进行递归修改。
-
流程和工作流规则: 如果在Salesforce中启用了流程或工作流规则,它们也可能导致记录变为只读状态,以防止循环触发。
-
锁定记录: Salesforce可能会在记录上加锁,以确保在执行重要操作时不会发生并发冲突。在记录被锁定的情况下,它可能会变为只读状态。
当您手动修改记录时,您可能不会受到这些限制,因为您的操作是直接交互的。但是,当在触发器中进行记录修改时,这些限制就会变得更加显著,因为Salesforce会实施额外的保护机制以确保数据的一致性和完整性。
要解决这个问题,您可能需要仔细检查触发器的逻辑,确保它符合Salesforce的事务和触发器执行上下文的要求。如果您在触发器中尝试修改记录,确保您的触发器逻辑不会导致递归触发或违反事务控制规则。
一个常见的原因是触发器设置为after update,为了避免递归修改,salesforce会将记录锁定。