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

Sql server 2008 r2 为什么我们不能在SQL Server中查看已删除的表,sql-server-2008-r2,Sql Server 2008 R2,什么是逻辑表?i、 e.删除并插入。也就是说,为什么我们不能这样做: Delete From exampletable Select * From deleted 在同一会话中,并查看已删除表的结果?您可能会搜索OUPUT子句: 您可能搜索OUPUT子句: 已删除和插入的表由SQL引擎创建,以处理数据操纵语句中的数据操纵。可以认为它们类似于在存储过程中创建的临时表,用于保存临时结果 一旦您的DML语句完成,SQL Server就不再需要它们了,因此它会删除临时表,它们不再用于查询。但是,正

什么是逻辑表?i、 e.删除并插入。也就是说,为什么我们不能这样做:

Delete 
From exampletable

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

您可能会搜索OUPUT子句:

您可能搜索OUPUT子句:

已删除和插入的表由SQL引擎创建,以处理数据操纵语句中的数据操纵。可以认为它们类似于在存储过程中创建的临时表,用于保存临时结果

一旦您的DML语句完成,SQL Server就不再需要它们了,因此它会删除临时表,它们不再用于查询。但是,正如@LucaszSzozda所解释的,您可以使用DML语句中的OUTPUT子句访问它们,因为此时引擎还没有删除它们。

删除和插入的表是由SQL引擎创建的,用于处理数据操纵语句中的数据操纵。可以认为它们类似于在存储过程中创建的临时表,用于保存临时结果


一旦您的DML语句完成,SQL Server就不再需要它们了,因此它会删除临时表,它们不再用于查询。不过,正如@LucaszSzozda解释的那样,您可以使用DML语句中的OUTPUT子句访问它们,因为此时引擎还没有删除它们。

感谢@EricBrandt的澄清。我想它可能会在交易期间存在。在尝试从testtable开始tran delete并选择*from deleted之后,我发现情况并非如此。非常感谢你。谢谢你@EricBrandt的澄清。我想它可能会在交易期间存在。在尝试从testtable开始tran delete并选择*from deleted之后,我发现情况并非如此。多谢各位。
Delete From exampletable
OUTPUT deleted.*