try the following:
DECLARE @Output table (orderID smallint)
BEGIN TRANSACTION
INSERT INTO ORDERS
(CustomerId ,OrderId ,.....)
OUTPUT INSERTED.OrderId
INTO @Output
SELECT
@CustomerId ,ISNULL(MAX(OrderId),0)+1, @...
FROM ORDERS WITH (UPDLOCK,HOLDLOCK)
WHERE CustomerId=@CustomerId
COMMIT
make sure you have an unqiue index / constraint for CustomerId, OrderId
source
share