Я пытаюсь сделать еще более простую функцию, чем one described here, чтобы получить следующее значение номера заказа для корзины покупок.Нужно очень простая «последовательность» для GetNextOrderNumber для SQL Server
- Я не волнует, если есть пробелы
- только завершенные заказы получить идентификатор (т.е. я намеренно не использую IDENTITY)
- Очевидно, что не должно быть дубликатами
- Я не заботиться о производительности и блокировке. Если у нас так много новых заказов, которые меня волнуют, тогда у меня возникнут другие проблемы
Я нашел немало других подобных вопросов, но не точное решение, которое я ищу.
То, что я до сих пор это:
USE [ShoppingCart]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Sequence_CompletedOrderID]
([val] [int] NOT NULL
CONSTRAINT [DF_Sequence_CompletedOrderID_NextValue] DEFAULT ((520000))
) ON [PRIMARY]
то для хранимая процедура:
CREATE PROC dbo.GetNextCompletedOrderId
@nextval AS INT OUTPUT
AS
UPDATE dbo.sequence_completedorderid SET @nextval=val += 1;
GO
Как я уже сказал, что я пытаюсь ее на основе статьи я связан выше - так что, возможно, это просто неуклюжий способ сделать это. Мой SQL не совсем подходит для таких простых вещей, как это, и его прошлого моего сна. Благодаря!
@marc_s becasue Я уже использую идентификатор. это читаемый пользователем порядковый номер. в таблице заказов также содержатся неполные заказы –
@Simon: ОК - это единственная причина, когда это имеет смысл :-) –
@marc_s принял еще несколько ответов :-) Я всегда сошел с тангенса, когда я начал делать это, но я Я пытаюсь быть лучше –