Transaction trong SQLite
Transaction trong SQLite là một đơn vị công việc được thực hiện bởi một Database. Transaction là đơn vị hoặc dãy công việc được thực hiện theo một thứ tự logic và hợp lý, có thể được thao tác bởi người dùng hoặc bởi một Database program. Một transaction là một sự lan truyền của một hoặc ...
Transaction trong SQLite là một đơn vị công việc được thực hiện bởi một Database. Transaction là đơn vị hoặc dãy công việc được thực hiện theo một thứ tự logic và hợp lý, có thể được thao tác bởi người dùng hoặc bởi một Database program.
Một transaction là một sự lan truyền của một hoặc nhiều thay đổi tới Database. Ví dụ, nếu bạn đang tạo một bản ghi hoặc cập nhật một bản ghi hoặc xóa một bản ghi từ một bảng, thì bạn đang thực hiện transaction trên bảng đó. Nó là quan trọng để điều khiển các transaction để bảo đảm toàn vẹn dữ liệu và để xử lý các Database Error.
Thực tế, bạn sẽ tập hợp nhiều truy vấn SQLite vào trong một nhóm và sẽ thực thi tất cả truy vấn này cùng với nhau như là một phần của một transaction.
Property của Transaction trong SQLite
Transaction có 4 property chuẩn, thường được tham chiếu bởi tên lược danh là ACID:
Điều khiển Transaction trong SQLite
Trong SQLite, có các lệnh sau được sử dụng để điều khiển transaction:
Các lệnh điều khiển transaction chỉ được sử dụng với các lệnh INSERT, UPDATE và DELETE. Chúng không thể được sử dụng trong khi tạo và xóa bảng, bởi vì những hoạt động này được ký thác tự động trong Database.
Lệnh BEGIN TRANSACTION trong SQLite
Các Transaction có thể được bắt đầu bởi sử dụng lệnh BEGIN TRANSACTION hoặc để đơn giản bạn sử dụng BEGIN. Những Transaction này thường tồn tại tới khi gặp các lệnh COMMIT hoặc ROLLBACK tiếp theo. Nhưng một Transaction sẽ vẫn ROLLBACK nếu cơ sở dữ liệu bị đóng hoặc nếu xuất hiện một lỗi. Sau đây là cú pháp cơ bản để khởi đầu một Transaction:
BEGIN; or BEGIN TRANSACTION;
Lệnh COMMIT trong SQLite
Lệnh COMMIT là lệnh điều khiển transaction được sử dụng để lưu các thay đổi đã được triệu hồi bởi một transaction tới Database.
Lệnh COMMIT lưu giữ tất cả transaction trong Database từ lệnh COMMIT hoặc ROLLBACK cuối cùng.
Cú pháp cơ bản của lệnh COMMIT là như sau:
COMMIT; or END TRANSACTION;
Lệnh ROLLBACK trong SQLite
Lệnh ROLLBACK là lệnh điều khiển transaction được sử dụng để trao trả transaction về trạng thái trước khi có các thay đổi mà chưa được lưu tới Database.
Lệnh ROLLBACK chỉ có thể được sử dụng để undo các transaction từ lệnh COMMIT hoặc ROLLBACK cuối cùng được thông báo.
Cú pháp cơ bản của lệnh ROLLBACK như sau:
ROLLBACK;
Ví dụ
Bạn theo dõi bảng COMPANY có các bản ghi sau:
ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
Bây giờ, bắt đầu một Transaction và xóa các bản ghi từ bảng có age = 25 và sau đó sử dụng lệnh ROLLBACK để undo lại tất cả các thay đổi.
sqlite> BEGIN; sqlite> DELETE FROM COMPANY WHERE AGE = 25; sqlite> ROLLBACK;
Nếu bạn kiểm tra bảng COMPANY, thì bạn sẽ vẫn thấy các bản ghi sau:
ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
Bây giờ, bắt đầu một Transaction khác và xóa các bản ghi từ bảng có age = 25, và cuối cùng sử dụng lệnh COMMIT để ký thác tất cả thay đổi.
sqlite> BEGIN; sqlite> DELETE FROM COMPANY WHERE AGE = 25; sqlite> COMMIT;
Nếu bạn kiểm tra bảng COMPANY lần nữa, bạn sẽ thấy các bản ghi sau:
ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 3 Teddy 23 Norway 20000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
Follow fanpage của team https://www.facebook.com/vietjackteam/ hoặc facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.
Các bài học SQLite phổ biến khác tại code24h: