我可以在 Salesforce 中不让用户知道的情况下停止将记录插入对象触发器吗?
Can I stop a record from being inserted in the object trigger without letting the user know in Salesforce?
为了与现有客户保持向后兼容,我必须能够在 Salesforce 中处理附件和文件。基本上,一些客户需要能够在我们的社区门户中插入文件和其他附件。我想在用户不知道他们插入的是哪一个的情况下执行此操作。
我能想到的最简单的方法是保留当前用于上传的顶点页面。然后在附件触发器中,我可以确定(在某处使用标志)附件是应该保留还是更改为文件 (ContentVersion)。如果它应该是一个文件;然后我将创建所有必要的记录、ContentVersion、ContentDocumentLink,然后跳过附件。但是,我想不出一种方法来阻止附件插入而不向用户产生错误。我真的不想让附件在插入后触发器中插入然后删除它,因为这看起来开销很大。
使用触发器意味着我可以处理社区用户可以添加文件的多个位置。否则,我将不得不在所有位置进行更改以确定要插入的记录类型。
所以说了那么多,主要的问题是有没有不用addError方法就可以停止插入记录的方法?
不,没有。您不能在不强制回滚整个事务或保存点区域的情况下停止在触发器中插入 Attachment
记录,这将包括您的附件触发器为添加内容对象而执行的任何 DML。
我看到的唯一选择是按照您的描述执行删除,或者更改 front-end 代码以直接插入内容记录而不是附件。
为了与现有客户保持向后兼容,我必须能够在 Salesforce 中处理附件和文件。基本上,一些客户需要能够在我们的社区门户中插入文件和其他附件。我想在用户不知道他们插入的是哪一个的情况下执行此操作。
我能想到的最简单的方法是保留当前用于上传的顶点页面。然后在附件触发器中,我可以确定(在某处使用标志)附件是应该保留还是更改为文件 (ContentVersion)。如果它应该是一个文件;然后我将创建所有必要的记录、ContentVersion、ContentDocumentLink,然后跳过附件。但是,我想不出一种方法来阻止附件插入而不向用户产生错误。我真的不想让附件在插入后触发器中插入然后删除它,因为这看起来开销很大。
使用触发器意味着我可以处理社区用户可以添加文件的多个位置。否则,我将不得不在所有位置进行更改以确定要插入的记录类型。
所以说了那么多,主要的问题是有没有不用addError方法就可以停止插入记录的方法?
不,没有。您不能在不强制回滚整个事务或保存点区域的情况下停止在触发器中插入 Attachment
记录,这将包括您的附件触发器为添加内容对象而执行的任何 DML。
我看到的唯一选择是按照您的描述执行删除,或者更改 front-end 代码以直接插入内容记录而不是附件。