Различие там - является ли преобразование неявным или явным. Первый существует бросок, второй является более явным вызовом к функции, которая преобразовывает. Они, вероятно, идут о выполнении того же самого по-разному.
Вы можете получить 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
, вы хотите использовать NEWID ()
declare @id uniqueidentifier
set @id = NEWID()
INSERT INTO [dbo].[tbl1]
([id])
VALUES
(@id)
select @id
, но проблема с кластеризованным индексом существует в GUID. прочтите и этот NEWSEQUENTIALID () . Это мои идеи, подумайте, прежде чем использовать GUID в качестве первичного ключа . :)