Khôi phục truy vấn mysql
Giao dịch trong SQL là một nhóm các câu lệnh SQL. Nếu một giao dịch được thực hiện thành công, thì tất cả các thay đổi dữ liệu đều được thực hiện trong khi giao dịch được lưu vào cơ sở dữ liệu. Nếu một giao dịch bị lỗi và bị khôi phục, thì tất cả các sửa đổi dữ liệu sẽ bị xóa (dữ liệu được khôi phục về trạng thái trước khi thực hiện giao dịch) Show Đặc điểm của giao dịchGiao dịch có bốn đặc điểm tiêu chuẩn sau
Nội dung chính Xử lý giao dịchCác lệnh sau đây được sử dụng để xử lý giao dịch
Các lệnh điều khiển giao dịch chỉ được sử dụng với các lệnh thao tác dữ liệu DML như - INSERT, UPDATE và DELETE Chúng không thể được sử dụng trong lệnh CREATE TABLE hoặc DROP TABLE vì các hoạt động này được tự động cam kết trong cơ sở dữ liệu 1. Lệnh COMMITLệnh COMMIT được sử dụng để lưu các thay đổi được gọi bởi một giao dịch với cơ sở dữ liệu Lệnh COMMIT lưu tất cả các giao dịch vào cơ sở dữ liệu kể từ khi lệnh COMMIT hoặc ROLLBACK cuối cùng Cú pháp của COMMIT command as after COMMIT; Ví dụ Sử dụng bảng KHÁCH HÀNG có các bản ghi sau đây +----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Ha Anh | 32 | Da Nang | 2000.00 | | 2 | Van Ha | 25 | Ha Noi | 1500.00 | | 3 | Vu Bang | 23 | Vinh | 2000.00 | | 4 | Thu Minh | 25 | Ha Noi | 6500.00 | | 5 | Hai An | 27 | Ha Noi | 8500.00 | | 6 | Hoang | 22 | Ha Noi | 4500.00 | | 7 | Binh | 24 | Ha Noi | 10000.00 | +----+----------+-----+-----------+----------+ Sau đây là một ví dụ có thể xóa các bản ghi từ bảng có tuổi = 25 và sau đó CAM KẾT thay đổi trong cơ sở dữ liệu DELETE FROM CUSTOMERS WHERE AGE = 25; COMMIT; Vì vậy, hai hàng từ bảng sẽ bị xóa và câu lệnh SELECT sẽ cho kết quả sau +----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Ha Anh | 32 | Da Nang | 2000.00 | | 3 | Vu Bang | 23 | Vinh | 2000.00 | | 5 | Hai An | 27 | Ha Noi | 8500.00 | | 6 | Hoang | 22 | Ha Noi | 4500.00 | | 7 | Binh | 24 | Ha Noi | 10000.00 | +----+----------+-----+-----------+----------+ 2. Lệnh QUAY LẠILệnh ROLLBACK được sử dụng để hoàn tất các giao dịch chưa được lưu vào cơ sở dữ liệu. Lệnh này chỉ có thể được sử dụng để hoàn thành các giao dịch kể từ khi lệnh COMMIT hoặc ROLLBACK cuối cùng được phát hành Cú pháp ROLLBACK command as after ROLLBACK; Ví dụ Sử dụng bảng KHÁCH HÀNG có các bản ghi sau đây +----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Ha Anh | 32 | Da Nang | 2000.00 | | 2 | Van Ha | 25 | Ha Noi | 1500.00 | | 3 | Vu Bang | 23 | Vinh | 2000.00 | | 4 | Thu Minh | 25 | Ha Noi | 6500.00 | | 5 | Hai An | 27 | Ha Noi | 8500.00 | | 6 | Hoang | 22 | Ha Noi | 4500.00 | | 7 | Binh | 24 | Ha Noi | 10000.00 | +----+----------+-----+-----------+----------+ Sau đây là một ví dụ, có thể xóa các bản ghi từ bảng có tuổi = 25 và sau đó XÓA các thay đổi trong cơ sở dữ liệu DELETE FROM CUSTOMERS WHERE AGE = 25; ROLLBACK; Vì vậy, hoạt động xóa sẽ không ảnh hưởng đến bảng và câu lệnh CHỌN sẽ cho kết quả sau +----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Ha Anh | 32 | Da Nang | 2000.00 | | 2 | Van Ha | 25 | Ha Noi | 1500.00 | | 3 | Vu Bang | 23 | Vinh | 2000.00 | | 4 | Thu Minh | 25 | Ha Noi | 6500.00 | | 5 | Hai An | 27 | Ha Noi | 8500.00 | | 6 | Hoang | 22 | Ha Noi | 4500.00 | | 7 | Binh | 24 | Ha Noi | 10000.00 | +----+----------+-----+-----------+----------+ 3. Lệnh SAVEPOINTSAVEPOINT là một điểm trong một giao dịch khi bạn có thể cuộn giao dịch trở lại một điểm nhất định mà không quay lại toàn bộ giao dịch Cú pháp của lệnh SAVEPOINT có thể hiển thị dưới đây ________số 8_______ Lệnh này chỉ phục vụ trong quá trình tạo SAVEPOINT trong số tất cả các lệnh giao dịch. Lệnh ROLLBACK được sử dụng để hoàn thành một nhóm các giao dịch Cú pháp để cuộn lại một SAVEPOINT như có thể hiển thị dưới đây ROLLBACK TO SAVEPOINT_NAME; Sau đây là ví dụ bạn định xóa ba bản ghi khác nhau từ bảng KHÁCH HÀNG. Bạn muốn tạo SAVEPOINT trước mỗi lần xóa, để bạn có thể XÓA trở lại SAVEPOINT bất kỳ lúc nào để trả lại dữ liệu thích hợp cho trạng thái ban đầu Ví dụ Sử dụng bảng KHÁCH HÀNG có các bản ghi sau +----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Ha Anh | 32 | Da Nang | 2000.00 | | 2 | Van Ha | 25 | Ha Noi | 1500.00 | | 3 | Vu Bang | 23 | Vinh | 2000.00 | | 4 | Thu Minh | 25 | Ha Noi | 6500.00 | | 5 | Hai An | 27 | Ha Noi | 8500.00 | | 6 | Hoang | 22 | Ha Noi | 4500.00 | | 7 | Binh | 24 | Ha Noi | 10000.00 | +----+----------+-----+-----------+----------+ Sau đây block code có chứa các chuỗi hoạt động +----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Ha Anh | 32 | Da Nang | 2000.00 | | 2 | Van Ha | 25 | Ha Noi | 1500.00 | | 3 | Vu Bang | 23 | Vinh | 2000.00 | | 4 | Thu Minh | 25 | Ha Noi | 6500.00 | | 5 | Hai An | 27 | Ha Noi | 8500.00 | | 6 | Hoang | 22 | Ha Noi | 4500.00 | | 7 | Binh | 24 | Ha Noi | 10000.00 | +----+----------+-----+-----------+----------+1 Bây giờ, ba lần xóa đã xảy ra, giả sử rằng bạn đã thay đổi quyết định và quyết định khôi phục lại SAVEPOINT mà bạn đã định nghĩa là SP2. Bởi vì SP2 được tạo ra sau khi xóa lần đầu, hai lần xóa cuối cùng được khôi phục +----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Ha Anh | 32 | Da Nang | 2000.00 | | 2 | Van Ha | 25 | Ha Noi | 1500.00 | | 3 | Vu Bang | 23 | Vinh | 2000.00 | | 4 | Thu Minh | 25 | Ha Noi | 6500.00 | | 5 | Hai An | 27 | Ha Noi | 8500.00 | | 6 | Hoang | 22 | Ha Noi | 4500.00 | | 7 | Binh | 24 | Ha Noi | 10000.00 | +----+----------+-----+-----------+----------+2 Lưu ý rằng chỉ có lần xóa đầu tiên xảy ra từ khi bạn khôi phục lại SP2 +----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Ha Anh | 32 | Da Nang | 2000.00 | | 2 | Van Ha | 25 | Ha Noi | 1500.00 | | 3 | Vu Bang | 23 | Vinh | 2000.00 | | 4 | Thu Minh | 25 | Ha Noi | 6500.00 | | 5 | Hai An | 27 | Ha Noi | 8500.00 | | 6 | Hoang | 22 | Ha Noi | 4500.00 | | 7 | Binh | 24 | Ha Noi | 10000.00 | +----+----------+-----+-----------+----------+3 Ra lệnh PHÁT HÀNH SAVEPOINT Sử dụng lệnh SAVEPOINT RELEASE để loại bỏ một SAVEPOINT mà bạn đã tạo ra Cú pháp của lệnh SAVEPOINT RELEASE as after +----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Ha Anh | 32 | Da Nang | 2000.00 | | 2 | Van Ha | 25 | Ha Noi | 1500.00 | | 3 | Vu Bang | 23 | Vinh | 2000.00 | | 4 | Thu Minh | 25 | Ha Noi | 6500.00 | | 5 | Hai An | 27 | Ha Noi | 8500.00 | | 6 | Hoang | 22 | Ha Noi | 4500.00 | | 7 | Binh | 24 | Ha Noi | 10000.00 | +----+----------+-----+-----------+----------+4 Khi SAVEPOINT bị xóa, bạn không thể sử dụng lệnh ROLLBACK để hoàn tác các giao dịch được thực hiện kể từ lần SAVEPOINT cuối cùng 4. Lệnh THIẾT LẬP GIAO DỊCHCó thể sử dụng lệnh SET TRANSACTION để bắt đầu một cơ sở dữ liệu giao dịch. Lệnh này được sử dụng để chỉ định các đặc tính cho giao dịch sau. Ví dụ, bạn có thể chỉ định một giao dịch chỉ được đọc hoặc đọc viết |