Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm cách nào để người dùng có thể kết thúc hoàn toàn giao dịch MySQL hiện tại?


Sau đây là các cách với sự trợ giúp của giao dịch MySQL hiện tại có thể được kết thúc ngầm -

Bằng cách chạy câu lệnh DDL

Giao dịch MySQL hiện tại sẽ kết thúc hoàn toàn và các thay đổi sẽ được cam kết bằng cách chạy bất kỳ câu lệnh DDL nào như cơ sở dữ liệu CREATE hoặc DROP, bảng Create, ALTER hoặc DROP hoặc các quy trình được lưu trữ. Đó là bởi vì, trong MySQL, các câu lệnh này không thể được khôi phục lại.

Ví dụ

 mysql> BẮT ĐẦU GIAO DỊCH; Truy vấn OK, 0 hàng bị ảnh hưởng (0,00 giây) mysql> CHÈN VÀO BIỂN Giá trị (3, 'gaurav', 'Comp', 69); Truy vấn OK, 1 hàng bị ảnh hưởng (0,26 giây) mysql> Tạo bảng sinh viên (id int, Tên Varchar (10),); Truy vấn OK, 0 hàng bị ảnh hưởng (0,84 giây) 

Giữa một giao dịch, chúng tôi chạy một câu lệnh DDL, do đó giao dịch này sẽ kết thúc hoàn toàn. MySQL sẽ lưu tất cả các thay đổi và nó không thể được khôi phục lại. Chúng ta có thể quan sát nó với sự trợ giúp của tập kết quả sau -

 mysql> Rollback; Truy vấn OK, 0 hàng bị ảnh hưởng (0,00 giây) mysql> select * from mark; + ------ + --------- + -------- --- + ------- + | Id | Tên | Chủ đề | Dấu | + ------ + --------- + ----------- + ------- + | 1 | Aarav | Toán học | 50 || 1 | Nhảm nhí | Toán học | 55 || 3 | Gaurav | Phần mềm | 69 | + ------ + --------- + ----------- + ------- + 3 hàng trong bộ (0,00 giây)  

Bằng cách ngắt kết nối phiên khách hàng

Việc ngắt kết nối phiên khách hàng sẽ kết thúc phiên hiện tại một cách hoàn toàn và trong trường hợp này, các thay đổi sẽ được khôi phục lại.

Bằng cách hủy phiên khách hàng

Việc giết một phiên khách hàng cũng sẽ kết thúc phiên hiện tại một cách hoàn toàn và trong trường hợp này, các thay đổi cũng sẽ được khôi phục lại.

Bằng lệnh BẮT ĐẦU GIAO DỊCH

Giao dịch hiện tại sẽ được kết thúc ngầm nếu chúng ta chạy lệnh BẮT ĐẦU GIAO DỊCH. Trong trường hợp này, các thay đổi sẽ được cam kết.

Ví dụ

 mysql> BẮT ĐẦU GIAO DỊCH; Truy vấn OK, 0 hàng bị ảnh hưởng (0,00 giây) mysql> CHÈN VÀO Giá trị đánh dấu (4, 'Rahul', 'Lịch sử', 40); Truy vấn OK, 1 hàng bị ảnh hưởng (0,00 giây) mysql> CHÈN VÀO Giá trị đánh dấu (5, 'Yashraj', 'Tiếng Anh', 48); Truy vấn OK, 1 hàng bị ảnh hưởng (0,00 giây) mysql> BẮT ĐẦU GIAO DỊCH; Truy vấn OK, 0 hàng bị ảnh hưởng (0,00 giây) 

Trong ví dụ này, câu lệnh BẮT ĐẦU GIAO DỊCH sẽ ngầm kết thúc giao dịch và các thay đổi sẽ được cam kết.

 mysql> select * from mark; + ------ + --------- + ----------- + ------- + | Id | Tên | Chủ đề | Dấu | + ------ + --------- + ----------- + ------- + | 1 | Aarav | Toán học | 50 || 1 | Nhảm nhí | Toán học | 55 || 3 | Gaurav | Phần mềm | 69 || 4 | Rahul | Lịch sử | 40 || 5 | Yashraj | Tiếng anh | 48 | + ------ + --------- + ----------- + ------- + 5 hàng trong bộ (0,00 giây)