跨租户场景下能否用PXDatabase.Update更新其他租户数据?
问题解答
- 结论:不能直接用常规的
PXDatabase.Update修改CompanyID=3的记录 - 原因:在Acumatica的多租户体系里,
PXDatabase系列方法默认会自动应用当前租户(即上下文里的CompanyID=2)的数据隔离过滤规则。在租户2的运行进程环境下,所有数据库操作只会限定访问属于租户2的数据集,根本无法查询到CompanyID=3的记录,自然无法执行更新操作。 - 特殊场景处理:如果业务确实有跨租户更新的需求,需通过以下方式实现(前提是具备对应权限):
- 调用
PXDatabase.Update的重载版本,显式传入目标租户的CompanyID参数 - 使用
PXAccess.SetCompanyId临时切换到租户3的上下文,完成更新后再切回原租户
- 调用
内容的提问来源于stack exchange,提问作者Kyle Vanderstoep
相关产品推荐
相关产品推荐

