sql >> Databasteknik >  >> RDS >> Sqlserver

Bästa sättet att få PK Guid av insatt rad

Du kan använda OUTPUT-funktionen för att återställa standardvärdena till en parameter.

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

Jag måste dock säga, var försiktig med att använda en unik identifierare som primärnyckel. Indexering på en GUID är extremt dålig prestanda eftersom alla nygenererade guider måste infogas i mitten av ett index och sällan bara läggas till i slutet. Det finns ny funktionalitet i SQL2005 för NewSequentialId(). Om otydlighet inte krävs med dina guider är det ett möjligt alternativ.



  1. Kommaseparerade värden med SQL Query

  2. Infoga primärnyckel för automatisk ökning i befintlig tabell

  3. Hur byter man databaser i postgres?

  4. Vad är det med (nolock) i SQL Server?