此更新日志涉及并发保护功能。
自2026-04起,以下变更操作将要求提供changeFromQuantity字段:
- inventoryAdjustQuantities:适用于InventoryChangeInput输入类型
- inventoryMoveQuantities:适用于InventoryMoveQuantityTerminalInput输入类型
- inventorySetOnHandQuantities:适用于InventorySetQuantityInput输入类型
- productVariantsBulkUpdate:适用于InventoryAdjustmentInput类型,该类型可在ProductVariantsBulkInput类型的quantityAdjustments字段中使用
这是一项破坏性变更。请注意,尽管changeFromQuantity字段在模式层面未显示为必填项,但若调用这些变更操作时未传入null或传入了当前实际数量,将在运行时引发错误。
您需要执行的操作
在迁移至2026-04版本之前,请更新您的应用程序逻辑以包含changeFromQuantity参数:
- 启用并发检查(推荐):传入预期的当前数量。
- 选择退出(跳过检查):显式传递 change From Quantity: null changeFromQuantity: null
如何使用该字段
changeFromQuantity字段有助于在多个更新同时发生时保持库存数据的准确性。如果实际数量与您提供的值不匹配,该变更操作将因CHANGE_FROM_QUANTITY_STALE错误而失败,从而防止意外的覆盖。
在以下示例中,仅当当前可用数量为 50 时,调整操作才会成功。如果在此期间其他进程修改了数量,您将收到错误提示,并可以使用更新后的值重试。
有关比较和交换机制以及何时应选择不进行比对检查的更多信息,请参阅我们的文档。我们建议用户除非其用例有充分理由,否则应避免选择不进行比对检查。
mutation { inventoryAdjustQuantities( input: { reason: "correction" name: "available" changes: [{ delta: 10 changeFromQuantity: 50 inventoryItemId: "gid://shopify/InventoryItem/123" locationId: "gid://shopify/Location/456" }] } ) { inventoryAdjustmentGroup { id } userErrors { code message } } }
