我想将一些临时数据移动到生产表并删除登台数据,并在可能的情况下同时插入生产表的历史数据。我想做类似下面的事情:
DELETE FROM _stagingTable
OUTPUT deleted.idTest, deleted.textTest
INTO _productionTable(idTest,textTest)
--Below is what im not sure
OUTPUT 'Add',deleted.idTest, deleted.textTest
INTO _productionTableHistory(typeTest, idTest, textTest)
是否可以多次使用输出子句?或者你建议我做什么?
提前致谢
答案 0 :(得分:0)
答案是不,你不能直接做你想做的事。
如果您不想使用触发器解决方案并且您不希望基于主键的查询,那么我认为您需要临时表。
输出到#TempHoldTable,然后从#TempHoldTable插入到table1中,并从#TempHoldTable插入到table2中。
答案 1 :(得分:-1)
我认为这是个主意:
DELETE FROM _stagingTable
OUTPUT deleted.idTest, deleted.textTest
INTO _productionTable(idTest, textTest);
INSERT INTO _productionTableHistory(typeTest, idTest, textTest)
SELECT 'Add', idTest, textTest
FROM _productionTable pt;
这是两个单独的陈述。如果需要,您可以将它们包装到单个事务中。
如果您关注_productionTable
中的数据,请在output
子句中使用之前将其截断。鉴于它以下划线开头,我发现很难相信意图不只是这个语句的临时位置,但我不知道正在使用的命名约定。