我有一个 SQL 表,其中每一行代表我的库存中的一个项目。我正在使用此更新查询在购买时保留项目。我很难理解是否需要额外的锁定机制来确保在多个请求执行此查询时不会发生死锁,还是这本身就足够了?我正在使用 MSSQL。
UPDATE TOP (@Quantity) [dbo].[Inventory]
SET IsAvailable = 0, OrderItemId = @OrderItemId
OUTPUT INSERTED.InventoryId
WHERE IsAvailable = 1 AND ProductId = @ProductId AND OrderItemId IS NULL;