如何在 Azure CosmosDB 上使用两个集合进行事务处理
How to do a transaction with two collections on Azure CosmosDB
我对 Azure CosmosDB 上的事务有疑问(使用 SQL API),我必须在其中编辑集合 A 上的两个项目并在集合 B 上创建其他项目。
我正在开发一个可以交换积分的项目。所以我的用户有他们的积分状态,我必须保存交易以供历史记录。在 SQL 数据库上,我开始交易,执行更新用户 A 余额的操作,更新用户 B 余额并在票证上创建一个新行,其中包含所有操作细节,如果一切正常,则结束交易。但是我有一些关于如何在 Azure CosmosDB 上做的事情。我有一个集合,其中有用户有他们的余额,而其他集合有票。因此,使用存储过程,我可以更新用户 A 和用户 B,因为它们都在同一个集合中,如果其中一些更新失败,则不会编辑该集合(作为 SQL 数据库的事务),但是,如何创建新工单?因为如果我正确理解了文档,它适用于同一个集合,但不适用于不同的集合。
你能给我一些建议,告诉我如何对同一笔交易进行 3 次操作吗?
CosmosDB 仅支持同一分区内的事务。
这意味着您不能进行跨容器事务,也不能在具有不同分区键值的 2 个文档之间进行事务。
我对 Azure CosmosDB 上的事务有疑问(使用 SQL API),我必须在其中编辑集合 A 上的两个项目并在集合 B 上创建其他项目。
我正在开发一个可以交换积分的项目。所以我的用户有他们的积分状态,我必须保存交易以供历史记录。在 SQL 数据库上,我开始交易,执行更新用户 A 余额的操作,更新用户 B 余额并在票证上创建一个新行,其中包含所有操作细节,如果一切正常,则结束交易。但是我有一些关于如何在 Azure CosmosDB 上做的事情。我有一个集合,其中有用户有他们的余额,而其他集合有票。因此,使用存储过程,我可以更新用户 A 和用户 B,因为它们都在同一个集合中,如果其中一些更新失败,则不会编辑该集合(作为 SQL 数据库的事务),但是,如何创建新工单?因为如果我正确理解了文档,它适用于同一个集合,但不适用于不同的集合。
你能给我一些建议,告诉我如何对同一笔交易进行 3 次操作吗?
CosmosDB 仅支持同一分区内的事务。
这意味着您不能进行跨容器事务,也不能在具有不同分区键值的 2 个文档之间进行事务。