为什么我们不能在SQL Server中查看已删除的表

时间:2018-09-28 19:14:38

标签: sql-server-2008-r2

“逻辑表”是什么意思?即DeletedInserted。也就是说,为什么我们不能做类似的事情:

Delete 
From exampletable

Select *
From deleted

在同一会话中,并查看已删除表的结果?

2 个答案:

答案 0 :(得分:2)

您可能搜索OUPUT子句:

Delete From exampletable
OUTPUT deleted.*

答案 1 :(得分:1)

DELETEDINSERTED表是由SQL引擎创建的,用于处理数据操作语句中的数据操作。可以将它们视为类似于您将在存储过程中创建的临时表,以保存临时结果。

一旦您的DML语句完成,SQL Server将不再需要它们,因此它将“删除”“临时表”,并且它们不再在那里进行查询。不过,您可以使用DML语句中的OUTPUT子句来访问它们,正如@LucaszSzozda解释的那样,因为到那时,引擎还没有删除它们。