在MERGE之后将删除的项目推送到临时表中

时间:2014-05-08 11:15:42

标签: sql sql-server select merge

对INTO子句的简单查询。当我尝试以下语句时,无论表是否存在,项都会被推送到CustomersBackup2013。

SELECT *
INTO CustomersBackup2013
FROM Customers;

然而,当我尝试在MERGE中使用into子句时

MERGE TargetTable tt
USING SyncTable st on <condition>
.
.
WHEN Not MATCHED BY SOURCE
DELETE
OUTPUT deleted.* INTO #Sometemptable;

我收到错误,指出无效的对象名称'#Sometemptable'

如果它不存在,它是否应该创建表?有什么我做错了。

有什么方法可以修改子句以将项目推送到#Sometemptable?

2 个答案:

答案 0 :(得分:1)

不,表必须存在才能使output子句起作用。

首先创建#temp表,然后输出已删除的值。临时表中的列必须与按顺序和类型的输出匹配。

答案 1 :(得分:0)

如果需要,

select into table会创建一个表格。它很像oracle的create table as select。见select into table

merge仅插入,更新或删除