sql >> データベース >  >> RDS >> Sqlserver

SQLServerのOUTPUT句を使用して更新する方法

    このようなものを試してみてください。それでも一時テーブルを使用する必要がありますが、読むのにそれほど悪くはなく、仕事は完了します。

    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. 持参日を比較して希望のデータを持参したいプログラムがあります

    2. OBJECTPROPERTY()を使用して、オブジェクトがSQLServerのユーザー定義テーブルであるかどうかを確認します。

    3. Oracle Autoincrement機能:11.2のトリガーまたはOracle JDBC CallableStatement?

    4. Cloud SQL Postgres jdbc:postgres://google/に適したドライバーが見つかりません