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

Điều gì sẽ xảy ra với giao dịch hiện tại của MySQL, nếu ở giữa giao dịch đó, câu lệnh DDL được thực thi?


Giao dịch MySQL hiện tại sẽ được cam kết và kết thúc khi 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ữ được thực thi ở giữa hiện tại Giao dịch. Tất cả các thay đổi cơ sở dữ liệu được thực hiện trong giao dịch hiện tại sẽ được thực hiện vĩnh viễn và không thể hoàn tác.

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 CÁC Giá trị MARKS (6, 'Manak', 'Lịch sử', 70); 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) 

Như chúng ta có thể thấy trong ví dụ trên, một câu lệnh DDL đã được thực hiện ở giữa một giao dịch, do đó giao dịch này sẽ kết thúc ngầm. 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 || 4 | Rahul | Lịch sử | 40 || 5 | Yashraj | Tiếng anh | 48 || 6 | Manak | Lịch sử | 70 | + ------ + --------- + --------- + --------- + 6 hàng trong bộ (0,00 giây)