Você pode usar a funcionalidade OUTPUT para retornar os valores padrão de volta a um parâmetro.
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
Devo dizer, porém, tenha cuidado ao usar um identificador exclusivo como chave primária. A indexação em um GUID é um desempenho extremamente ruim, pois quaisquer guids recém-gerados terão que ser inseridos no meio de um índice e raramente adicionados no final. Há uma nova funcionalidade no SQL2005 para NewSequentialId(). Se a obscuridade não for necessária com seus Guids, então é uma alternativa possível.