SCOPE_IDENTITY () для GUID?

Различие там - является ли преобразование неявным или явным. Первый существует бросок, второй является более явным вызовом к функции, которая преобразовывает. Они, вероятно, идут о выполнении того же самого по-разному.

91
задан Jeroen 18 November 2015 в 13:23
поделиться

2 ответа

Вы можете получить GUID обратно с помощью OUTPUT. Это также работает, когда вы вставляете несколько записей.

CREATE TABLE dbo.GuidPk (
    ColGuid uniqueidentifier NOT NULL DEFAULT NewSequentialID(),
    Col2    int              NOT NULL
)
GO

DECLARE @op TABLE (
    ColGuid uniqueidentifier
)

INSERT INTO dbo.GuidPk (
    Col2
)
OUTPUT inserted.ColGuid
INTO @op
VALUES (1)

SELECT * FROM @op

SELECT * FROM dbo.GuidPk

Ссылка: Изучение предложения OUTPUT SQL 2005

95
ответ дан 24 November 2019 в 06:47
поделиться

, вы хотите использовать NEWID ()

    declare @id uniqueidentifier
    set @id  = NEWID()
    INSERT INTO [dbo].[tbl1]
           ([id])
     VALUES
           (@id)

    select @id

, но проблема с кластеризованным индексом существует в GUID. прочтите и этот NEWSEQUENTIALID () . Это мои идеи, подумайте, прежде чем использовать GUID в качестве первичного ключа . :)

8
ответ дан 24 November 2019 в 06:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: