Możesz użyć funkcji OUTPUT, aby przywrócić domyślne wartości z powrotem do parametru.
CREATE TABLE MyTable
(
MyPK UNIQUEIDENTIFIER DEFAULT NEWID(),
MyColumn1 NVARCHAR(100),
MyColumn2 NVARCHAR(100)
)
DECLARE @myNewPKTable TABLE (myNewPK UNIQUEIDENTIFIER)
INSERT INTO
MyTable
(
MyColumn1,
MyColumn2
)
OUTPUT INSERTED.MyPK INTO @myNewPKTable
VALUES
(
'MyValue1',
'MyValue2'
)
SELECT * FROM @myNewPKTable
Muszę jednak powiedzieć, że uważaj, używając unikalnego identyfikatora jako klucza podstawowego. Indeksowanie na identyfikatorze GUID jest wyjątkowo słabą wydajnością, ponieważ wszelkie nowo wygenerowane identyfikatory będą musiały zostać wstawione w środku indeksu, a rzadko po prostu dodane na końcu. W SQL2005 pojawiła się nowa funkcjonalność dla NewSequentialId(). Jeśli niejasność nie jest wymagana w przypadku twoich Guidów, jest to możliwa alternatywa.