避免在 Salesforce 中插入记录的解决方案

Solution to avoid a record from being inserted in Salesforce

我需要在满足特定条件时停止插入记录。在 addError() 的帮助下,我在触发器的 beforeInsert 中进行了此更改。 我对这个解决方案有疑问:apex addError - remove default error message。 我想删除此默认错误消息并仅保留我的自定义消息。我也想让它变得更大胆、更大一些。我现在确信 addError() 无法实现这些事情。

是否有其他解决方案?我的意思是,要阻止插入这条记录?

我关注的对象是ObjectA。 ObjectA 查找了 ObjectB。 ObjectA 中的这个 ObjectB 字段必须是唯一的。任何两个 ObjectA 记录都不能包含对同一 ObjectB 字段的查找。那是我需要停止插入的时候。

有人可以帮我解决这个问题吗?

bold and bit bigger too

仅当您具有自定义 UI(Visualforce/Aura 组件/Lightning Web 组件...)时才有可能。我不会花太多时间在这上面。专注于让你的逻辑正确并确保它也通过 API 运行(例如,不仅手动插入而且 Data Loader 都受到保护)。

如果 addError 没有满足您的需求,请考虑添加辅助文本 (18) 字段。将其标记为唯一并使用 before insert,before update 触发器(或工作流)用该查找的值填充它。

唯一性应由数据库处理。你真的准备好完美地写出 "before insert" 了吗?更新呢?取消删除(从回收站恢复?)怎么样?如果我想同时加载 2 个相同的记录怎么办?该触发器开始看起来有点复杂。如果不允许用户查看应该检测到冲突的记录怎么办(共享规则等......我的意思是你的场景听起来像唯一性应该是 "global" 但你需要真正充分的理由来写 "without sharing" 触发器处理程序中的代码)。

当然这一切都是可能的,但只用一个独特的字段来制作它并称之为一天要容易得多。并告诉业务处理不一定友好的错误消息。