我有一个存储程序,
ALTER PROCEDURE [dbo].[InsertDealGallery]
(
@ImageID INT,
@DealID INT
)
AS
DECLARE @MaxOrder INT;
SELECT @MaxOrder = MAX([Order]) + 1 FROM DealGallery WHERE DealID = @DealID
IF (@MaxOrder IS NULL)
BEGIN
SET @MaxOrder = 1;
END
INSERT INTO [DealGallery]
([ImageID]
,[DealID]
,[Order])
VALUES
(@ImageID
,@DealID
,@MaxOrder)
但我担心这不是原子的,因为同时 MaxOrder 在并发线程中可能保持不变。那么如何使这个原子?