Vixita-i50 Ответов: 1

Как вычислить пользовательский идентификатор, чтобы расти до бесконечности


Привет
У меня есть функция определения пользователя, как показано ниже, чтобы вычислить пользовательский идентификатор, используя PK Id в качестве руководства
 CREATE FUNCTION [dbo].[CustomeId] (
 @Prefix NVARCHAR(10),
 @Id INT,
 @Length INT,
 @PaddingChar CHAR(1) = '0'
)
RETURNS NVARCHAR(MAX)
AS
BEGIN

RETURN (
 SELECT @Prefix + RIGHT(REPLICATE(@PaddingChar, @Length) + CAST(@Id as nvarchar(10)), @Length)
)

END



В спецификации вычисляемого столбца моей таблицы sql у меня есть:
([dbo].[CustomeZoneId]('GH-',CONVERT([nvarchar](10),[Id],(0)),(10),'0'))


и является гр-0000000001 , гр-999999999
но я хочу, чтобы он мог расти до бесконечности вдоль PK Id. что-то вроде GH-1 до бесконечности

Что я уже пробовал:

([dbo].[CustomeZoneId]('GH-',CONVERT([nvarchar](10),[Id],(0)),(10),'0'))

njammy

Разве вы не можете использовать объект последовательности MS SQL?

Dave Kreskowiak

Вы не можете использовать "бесконечность" как требование. Бесконечные идентификаторы требуют бесконечного хранения, которого нет ни у одной машины на земле.

Это бизнес-правило, о котором вы говорите. Так что же ожидает бизнес, когда идентификационные номера "ролловер"? Вот где лежит твой ответ.

1 Ответов

Рейтинг:
2

SteveHolle

Использовать guid?

tp://stackoverflow.com/questions/1435908/c-sharp-guid-and-sql-uniqueidentifier