Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да използвате клаузата OUTPUT на SQL Server за актуализация

Опитайте нещо подобно, все още трябва да използвате временната таблица, но не е лошо за четене и върши работата.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL пространствен многоъгълник отвътре навън

  2. Свържете се с база данни на SQL Server от Node.js

  3. Вмъкване от една таблица в множество таблици при нормализиране на базата данни

  4. Какво представлява схемата в SQL Server и как да създадете/препуснете схема в базата данни на SQL Server - SQL Server / TSQL урок, част 27

  5. SMALLDATETIMEFROMPARTS() Примери в SQL Server (T-SQL)