Puede utilizar la funcionalidad de SALIDA para devolver los valores predeterminados a un 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
Sin embargo, debo decir que tenga cuidado al usar un identificador único como clave principal. La indexación en un GUID tiene un rendimiento extremadamente bajo, ya que los GUID recién generados deberán insertarse en el medio de un índice y, en raras ocasiones, solo agregarse al final. Hay una nueva funcionalidad en SQL2005 para NewSequentialId(). Si no se requiere oscuridad con sus Guids, entonces es una posible alternativa.