2012-11-23 61 views
8

Tôi có một bảng có hàng triệu hàng. Chắc chắn tôi đã viết một truy vấn cập nhật trên một bảng mà không có mệnh đề where và nhấn thực hiện. Nó bắt đầu thực hiện. Sau hai giây, tôi nhận ra truy vấn là sai và tôi nhấp vào nút 'Dừng' trong phòng quản lý máy chủ Sql. Việc thực hiện truy vấn bị dừng lại, tất cả điều này xảy ra trong vòng 7 giây. Bây giờ tôi tò mò muốn biết nếu có bất kỳ hàng bị ảnh hưởng nếu có bất kỳ đó là họ. Ho để tìm. Cảm ơn trước.Truy vấn cập nhật bị hủy bởi người dùng

+0

trùng lặp có thể xảy ra (http [Làm thế nào tôi có thể rollback một truy vấn UPDATE trong SQL server 2005?]: // stackoverflow .com/questions/721471/how-can-i-rollback-an-update-truy vấn-in-sql-server-2005) – Kermit

+0

Tôi không nghĩ vậy njk. Tôi không muốn quay trở lại, tôi muốn biết số hàng bị ảnh hưởng. Cảm ơn – MaxRecursion

+2

@AkshayKulkarni Bạn không có rollback để làm không có cam kết đã được thực hiện. Máy chủ SQL thực hiện cam kết ở cuối câu lệnh nhưng bạn đã hủy. Vì vậy, không có hàng bị ảnh hưởng – Marc

Trả lời

9

Một câu lệnh cập nhật đơn sẽ không cập nhật một số hàng. Đó là tất cả các hàng hoặc không có

Đây là atomicity trong thuộc tính ACID mà máy chủ SQL tôn trọng tốt.

Nguyên tử yêu cầu mỗi giao dịch là "tất cả hoặc không có gì": nếu một phần của giao dịch bị lỗi, toàn bộ giao dịch không thành công và trạng thái cơ sở dữ liệu không thay đổi. Một hệ thống nguyên tử phải đảm bảo nguyên tử trong từng và mọi tình huống, bao gồm cả lỗi nguồn, lỗi và sự cố.

Sau đó cam kết là ở phần cuối của báo cáo kết quả, vì vậy khi bạn hủy rằng không có bất cam

+0

Làm thế nào để trả lời câu hỏi này? – Kermit

+0

Câu hỏi đặt ra là "Bây giờ tôi tò mò muốn biết liệu có bất kỳ hàng nào bị ảnh hưởng nếu có bất kỳ hàng nào". Không phải như vậy – Marc

+0

Vì vậy, theo sự hiểu biết của tôi không có hàng đã được thay đổi phải không? Cảm ơn rất nhiều. Có cách nào để xác minh không? – MaxRecursion

Các vấn đề liên quan