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
Trả lời
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
Làm thế nào để trả lời câu hỏi này? – Kermit
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
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
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
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
@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