sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan bruger du OUTPUT-klausulen i SQL Server til opdatering

Prøv noget som dette, du skal stadig bruge temp-tabellen, men det er ikke så slemt at læse, og det får jobbet gjort.

CREATE TABLE #tmp
(
    tmpID INT IDENTITY(1,1) PRIMARY KEY CLUSTERED,
    xmlData VARCHAR(255),
    EntityId INT
)
DECLARE @t2 TABLE
(
    tmpID INT,
    EntityId INT
)

MERGE dbo.EntityMaster AS EM
USING
(
    SELECT tmpID,
        xmlData,
        EntityId
    FROM #tmp
) AS X
    ON EM.EntityId = X.EntityId
WHEN NOT MATCHED THEN
    INSERT (EntityType)
    VALUES (X.xmlData)
OUTPUT X.tmpID, INSERTED.EntityId
INTO @t2 (tmpID, EntityId);

UPDATE T
SET EntityId = T2.EntityId
FROM @t2 T2
INNER JOIN #tmp T
    ON T2.tmpID = T.tmpID



  1. At tælle ikke-nul kolonner på en ret mærkelig måde

  2. Sådan forbinder du to tabeller med samme antal rækker efter deres rækkefølge

  3. Opret forbindelse til ekstern MySQL-database via SSH ved hjælp af Java

  4. Tabel './mysql/proc' er markeret som nedbrudt og bør repareres