在SQL SERVER

时间:2015-08-19 07:56:30

标签: sql-server merge

我正在使用MERGE来执行UPSERT某事。但是在THEN部分我需要执行多个操作,我需要同时INSERT到表,还需要UPDATE在另一个表中。 我的问题是,我似乎没有看到如何执行多项操作。

我试过了:

MERGE tblCategories AS T
    USING @RELEVANT_CATS AS S
    ON (T.CatId = S.CatId)
    WHEN NOT MATCHED BY TARGET
        THEN
            BEGIN 
                INSERT (BizID, RequestId) VALUES(S.CatId, @CatId);
            END

由于某种原因,此处不允许BEGINEND

还试过这个:

MERGE tblCategories AS T
    USING @RELEVANT_CATS AS S
    ON (T.CatId = S.CatId)
    WHEN NOT MATCHED BY TARGET
        THEN EXECUTE INSERT_CAT S.CatId, @CatId;

INSERT_CAT是一些执行我需要的存储过程,但同样,不允许使用此语法。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

开始交易。
output clause添加到合并中,并将合并的结果捕获到表变量中 使用表变量更新捕获的$action'INSERT'的其他表 提交交易。