База данных: MS SQL 2008
Возникла потребность при создании записи в таблице генерировать новый последовательный Guid. Причем генерировать на уровне базы данных.
К сожалению, newsequentialid() имеет ограничения: её можно использовать только в качетсве default-значения колонки. Соответственно пришлось прибегнуь к обходному маневру: создать свою хранимую процедуру
CREATE PROCEDURE dbo.GenerateNewSequentialId(
@NewId uniqueidentifier output
)
AS
BEGIN
declare @returnid table (id uniqueidentifier default newsequentialid(), fakefield int)
INSERT INTO @returnid(fakefield)
VALUES(1)
set @NewId = (select top 1 id from @returnid)
END
Статьи по теме
MS SQL использование GUID как первичных ключей (Primary key)
Возникла потребность при создании записи в таблице генерировать новый последовательный Guid. Причем генерировать на уровне базы данных.
К сожалению, newsequentialid() имеет ограничения: её можно использовать только в качетсве default-значения колонки. Соответственно пришлось прибегнуь к обходному маневру: создать свою хранимую процедуру
CREATE PROCEDURE dbo.GenerateNewSequentialId(
@NewId uniqueidentifier output
)
AS
BEGIN
declare @returnid table (id uniqueidentifier default newsequentialid(), fakefield int)
INSERT INTO @returnid(fakefield)
VALUES(1)
set @NewId = (select top 1 id from @returnid)
END
Статьи по теме
MS SQL использование GUID как первичных ключей (Primary key)
Комментариев нет:
Отправить комментарий