2012-11-23 27 views
8

我有一張擁有數百萬行的表。 有意無意地,我在沒有where子句的表上寫了一個更新查詢,並單擊執行。 它開始執行。兩秒後,我意識到查詢是錯誤的,我在Sql server management studio中單擊了「停止」按鈕。查詢執行已停止,這一切都在7秒內發生。 現在我很想知道是否有任何行受到影響,如果有的話。 何找到它。 在此先感謝。更新查詢被用戶取消

+0

可能重複(HTTP [我怎麼可以回滾在SQL Server 2005的更新查詢?]://計算器.com/questions/721471/how-can-i-rollback-an-update-query-in-sql-server-2005) – Kermit

+0

我不這麼認爲。我不想回滾,我想知道受影響的行數。謝謝 – MaxRecursion

+2

@AkshayKulkarni你沒有回滾,因爲沒有提交。 SQL服務器在語句結尾處執行提交,但您取消了。所以沒有行影響 – Marc

回答

9

單個更新語句不會更新某些行。它是全部的行或沒有的

這是ACID屬性中的atomicity SQL服務器很好的尊重。

原子性要求每個事務是「全部或全部」:如果事務的一部分失敗,整個事務失敗,數據庫狀態保持不變。原子系統必須保證每種情況下的原子性,包括電源故障,錯誤和崩潰。

然後提交是在語句的結束,所以當你取消沒有提交的

+0

這是如何回答這個問題? – Kermit

+0

問題是「現在我很想知道是否有任何行受到影響,如果有的話」。有沒有這樣 – Marc

+0

所以根據我的理解,沒有行改變了嗎?非常感謝。有什麼方法可以驗證嗎? – MaxRecursion