sql >> Database >  >> RDS >> Sqlserver

De beste manier om de PK-gids van de ingevoegde rij te krijgen

U kunt de OUTPUT-functionaliteit gebruiken om de standaardwaarden terug te zetten in een 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

Ik moet echter zeggen dat je voorzichtig moet zijn met het gebruik van een unieke identifier als primaire sleutel. Indexeren op een GUID is extreem slechte prestatie, aangezien nieuw gegenereerde GUID's in het midden van een index moeten worden ingevoegd en zelden aan het einde worden toegevoegd. Er is nieuwe functionaliteit in SQL2005 voor NewSequentialId(). Als onduidelijkheid niet vereist is bij uw gidsen, dan is dit een mogelijk alternatief.



  1. Hoe (null) waarden te vervangen door 0 output in PIVOT

  2. DAYOFMONTH() Voorbeelden – MySQL

  3. Hoe ORA-12505 te repareren, TNS:luisteraar kent momenteel geen SID die is opgegeven in de connect-descriptor

  4. T-SQL-bugs, valkuilen en best practices - draaiend en ondraaiend