
Chắc hẳn, các bạn đã nghe nhiều về transaction rồi. Nhưng không phải ai cũng hiểu và sử dụng thành thạo transaction. Nên bài hôm nay mình sẽ phân tích chi tiết về transaction và dựa trên ví dụ để chúng ta hiểu rõ hơn về nó.
Transaction là gì và mục đích sử dụng
- Là kỹ thuật xử lý nhiều tiến trình được thực hiện tuần tự.
- Các tiến trình đó có thể là: create, read, update hoặc delete.
- Nếu tất cả tiến trình thực hiện thành công, thì transaction sẽ được commit và dữ liệu sẽ được cập nhật vào DB.
Ví dụ về transaction
Transaction bên dưới đang có 2 tiến trình:
- Thực hiện rút tiền từ tài khoản #1.
- Sau đó, gửi tiền vào tài khoản #2.
Nhưng nếu tiến trình 1 bị lỗi, tức là tiền không thể rút từ tài khoản 1, thì tiến trình 2 không thể thực hiện, dữ liệu sẽ được phục hồi về ban đầu.
Tương tự như vậy, nếu tiến trình 1 thành công, nhưng tiến trình 2 gặp lỗi, thì dữ liệu không thể được commit và sẽ toàn bộ dữ liệu ở các tiến trình trước cũng sẽ phục hồi về ban đầu.
Cuối cùng, cả 2 tiến trình đều thực hiện thành công thì toàn bộ dữ liệu sẽ được commit vào DB.
Hướng dẫn cách tạo transaction
Cú pháp
Để bắt đầu một transaction:
START TRANSACTION;
Khi muốn trả về trạng thái DB ban đầu trước khi transaction hoạt động, hoặc có thể trả về SAVEPOINT:
ROLLBACK;
Cuối cùng, để cập nhật dữ liệu ở transaction đến DB:
COMMIT;
Ví dụ
Bạn còn nhớ ví dụ ở bài STORED PROCEDURE (SP) không? Nó sẽ thực hiện tạo ra thông tin khám bệnh, bằng cách đăng ký dữ liệu lần lượt vào các table medical_record, doctor_treatment. Nhưng trong trường hợp dữ liệu đăng ký thành công ở table medical_record, sau đó thực hiện thêm dữ liệu vào table doctor_treatment lại xảy ra lỗi. Vậy thì dữ liệu ở table trước đó (tức là table medical_record) đang bị dư thừa và có thể gây ra sự không đồng bộ về việc liên kết dữ liệu sau này.
Nên mình sẽ áp dụng transaction vào SP để giải quyết vấn đề trên, nếu một trong các tiến trình xảy ra lỗi, thì sẽ phục hồi lại trạng thái của DB về ban đầu.
delimiter //
CREATE PROCEDURE sp_register_treatment_transaction (p_doctor_id INT
, p_patient_id INT
, p_fee DOUBLE)
BEGIN
START TRANSACTION;
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;
INSERT INTO medical_record (date_of_examination, fee, patient_id)
VALUES (CURDATE(), p_fee, p_patient_id);
INSERT INTO doctor_treatment (doctor_id, record_id)
VALUES (p_doctor_id, LAST_INSERT_ID());
SELECT d.doctor_id, d.last_name, mr.fee, p.patient_id, p.`name`
FROM doctor d
INNER JOIN doctor_treatment dt ON d.doctor_id = dt.doctor_id
INNER JOIN medical_record mr ON dt.record_id = mr.record_id
INNER JOIN patient p ON mr.patient_id = p.patient_id
WHERE mr.record_id = LAST_INSERT_ID();
COMMIT;
END;
END //
delimiter ;
Với dòng DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK, nó sẽ giúp thoát SP và rollback lại toàn bộ dữ liệu khi xảy ra lỗi ở một dòng lỗi nào đó trong transaction.
Các tính chất của transaction
Bao gồm 4 tính chất, kết hợp lại thành cụm là ACID.
Atomicity
Toàn bộ các tiến trình đều thành công, thì transaction sẽ được đánh giá là thành công. Ngược lại, nếu có một điểm bị lỗi thì tất cả tiến trình trước đó sẽ rollback.
Consistency
Các dữ liệu được thực hiện ở transaction phải đảm bảo theo các quy định, ràng buộc (constraints), cascade và trigger.
Isolation
Tất cả transaction sẽ thực hiện độc lập với các transaction khác.
Durability
Những cập nhật đến từ transaction vẫn luôn đảm bảo thành công, thậm chí nếu hệ thống có bị lỗi.
Kết luận
Tóm lại, một chuỗi lệnh được xảy ra và các lệnh cần có tính ảnh hưởng lẫn nhau thì transaction sẽ là giải pháp cho vấn đề này. Và các dữ liệu từ transaction sẽ luôn được đảm bảo.

Devwork là Nền tảng TUYỂN DỤNG IT CẤP TỐC với mô hình kết nối Nhà tuyển dụng với mạng lưới hơn 30.000 headhunter tuyển dụng ở khắp mọi nơi.Với hơn 1800 doanh nghiệp IT tin dùng Devwork để :
Tag Cloud:
Tác giả: quyenntt
Việc làm tại Devwork
Bài viết liên quan

Hướng dẫn giả lập Android trên iOS dễ thao tác và đơn giản
Bạn đang sử dụng iPhone hoặc iPad nhưng lại muốn trải nghiệm ứng dụng hoặc game độc quyền chỉ có trên Android? Điều này tưởng như không thể, nhưng với giả lập Android trên iOS, bạn hoàn toàn có thể "biến hóa" thiết bị của mình để thử sức với môi trường Android mà không cần đổi máy. Trong bài viết này, Devwork sẽ hướng dẫn bạn cách giả lập Android trên iOS một cách chi tiết, dễ thao tác, cùng với những lưu ý quan trọng để đảm bảo an toàn cho thiết bị....
Top phần mềm cắt ghép video miễn phí cho người mới bắt đầu
Bạn muốn lưu giữ những khoảnh khắc đáng nhớ của gia đình, tạo video quảng cáo sản phẩm độc đáo, hay đơn giản chỉ là chỉnh sửa video dễ hiểu hơn? Với sự phát triển của công nghệ, việc cắt ghép và chỉnh sửa video giờ đây trở nên dễ dàng hơn bao giờ hết, ngay cả khi bạn không phải là một chuyên gia dựng phim. Bài viết này Devwork sẽ giới thiệu đến bạn những phần mềm cắt ghép video miễn phí tốt nhất, phù hợp với mọi đối tượng từ sinh viên, dân văn phòng đến khách hàng doanh nghiệp.

Top 8 phần mềm chỉnh sửa video cho Youtuber cho người mới
Bạn là một Youtuber mới vào nghề, hay một người nội trợ muốn lưu giữ khoảnh khắc gia đình? Hoặc đơn giản là một sinh viên năng động muốn tạo ra những video clip độc đáo? Dù bạn là ai, việc sở hữu một phần mềm chỉnh sửa video cho Youtuber phù hợp là vô cùng quan trọng. Thị trường hiện nay có vô vàn lựa chọn, từ miễn phí đến trả phí, từ đơn giản đến chuyên nghiệp. Vậy đâu là phần mềm phù hợp nhất với bạn? Hãy cùng khám phá trong bài viết này!

Top phần mềm chỉnh sửa video trên điện thoại đơn giản
Bạn muốn tự tay tạo ra những video sống động, thu hút mà không cần dùng đến máy tính hay phần mềm phức tạp? Bạn tìm kiếm những phần mềm chỉnh sửa video trên điện thoại dễ sử dụng, nhiều tính năng, lại miễn phí hoặc chi phí thấp? Trong bài viết này, Devwork sẽ giới thiệu 10 phần mềm chỉnh sửa video trên điện thoại tốt nhất, được đánh giá cao về tính tiện lợi và hiệu quả.


TOP 10 phần mềm chỉnh sửa video trên máy tính tốt nhất
Ngày nay việc tạo ra những video chất lượng cao đã trở thành nhu cầu thiết yếu của nhiều người, từ nhà sáng tạo nội dung, marketer cho đến học sinh, sinh viên. Để đạt được hiệu quả tốt nhất, việc lựa chọn đúng phần mềm chỉnh sửa video trên máy tính sẽ giúp bạn tiết kiệm thời gian, chất lượng và thể hiện ý tưởng một cách sáng tạo nhất. Bài viết dưới đây Devwork sẽ chia sẻ với bạn 10 phần mềm được đánh giá cao nhất hiện nay.

Tổng hợp các cách quay màn hình máy tính đơn giản chi tiết nhất
Bạn là người nội trợ muốn chia sẻ công thức nấu ăn "bí mật" cho hội chị em? Bạn là sinh viên cần ghi lại bài giảng online để ôn tập hiệu quả? Hay bạn là dân văn phòng muốn tạo video hướng dẫn nghiệp vụ cho đồng nghiệp? Hoặc thậm chí, bạn là doanh nghiệp muốn giới thiệu sản phẩm phần mềm bằng video demo ấn tượng? Trong bài viết này, hãy cùng Devwork tìm hiểu cách quay màn hình máy tính đơn giản, hiệu quả, phù hợp với mọi đối tượng và mọi hệ điều hành
