2012-03-02 34 views
1

我在SQL Server 2005和2008數據庫中有一個表,它具有一個定期作業,它截斷表和另一個具有從最後刪除行的定期作業的表。我的問題是,如果我有一個在截斷或刪除作業開始之前已經開始的選擇,那麼選擇查詢會截斷/刪除數據,還是可能會在選擇讀取數據之前刪除某些數據?選擇將使用一個表或其他不加入兩個表。在SQL Server中同時選擇和截斷或刪除

的發言將是沿着這些路線:

select * from someTable where id > x and id < y 

truncate table someTable 

delete from otherTable where id < z 

回答

3

截斷將等待SELECT完成。 DELETE不會。在SELECT有機會閱讀它們之前,DELETE可以刪除行。這是否真的會發生取決於更多的因素,如表格組織(索引,聚集索引)和基數(表格中的行數,下限和上限之間的行數,低於上限的行數)。

您可以通過部署row versioning