
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

Cách xóa ứng dụng trên máy tính đơn giản trên win 7, 10
Bạn đang nao núng mỗi khi muốn gỡ bỏ phần mềm không cần thiết trên máy tính? Trong bài viết này, chúng tôi sẽ hướng dẫn chi tiết cách xóa ứng dụng trên máy tính theo hai phương pháp chính, áp dụng đơn giản trên cả Windows 7 và Windows 10, giúp bạn làm sạch hệ thống, giải phóng dung lượng, và giúp máy chạy mượt hơn. Hãy cùng khám phá ngay!...
Cách kết nối Bluetooth Win 10 với các thiết bị
Bluetooth đã trở thành một phần không thể thiếu trong cuộc sống hiện đại. Từ việc kết nối tai nghe không dây để nghe nhạc trong lúc nấu ăn, chia sẻ tài liệu giữa các thiết bị, đến việc trình chiếu slide trong các buổi họp quan trọng, Bluetooth giúp cuộc sống của chúng ta trở nên dễ dàng và tiện lợi hơn rất nhiều. Bài viết này sẽ cung cấp một hướng dẫn chi tiết, dễ hiểu về kết nối bluetooth win 10, dành cho tất cả mọi người, từ người nội trợ, sinh viên, dân văn phòng đến khách hàng doanh nghiệp.

Top 6 phần mềm khôi phục dữ liệu hoàn toàn miễn phí
Bạn vừa lỡ tay xóa nhầm file báo cáo quan trọng? Chiếc USB chứa ảnh kỷ niệm gia đình bỗng dưng "dở chứng"? Trong thời đại số, mất dữ liệu là "tai nạn" mà ai cũng có thể gặp phải. Nhưng tin vui là, với sự trợ giúp của các phần mềm khôi phục dữ liệu, bạn hoàn toàn có thể "cứu" lại những thông tin quý giá này. Bài viết này sẽ giới thiệu Top phần mềm khôi phục dữ liệu đã xóa trên ổ cứng, USB, thẻ nhớ miễn phí

Tại sao kiểm tra nhiệt độ CPU lại quan trọng? Cách kiểm tra nhiệt độ CPU
Bạn có bao giờ tự hỏi, chiếc máy tính thân yêu của mình đang "khỏe" đến mức nào? Chúng ta thường quan tâm đến việc máy chạy nhanh hay chậm, cài được game gì, nhưng lại quên mất một yếu tố quan trọng ảnh hưởng trực tiếp đến tuổi thọ và hiệu suất của máy đó là nhiệt độ CPU. Hãy cùng Devwork tìm hiểu tại sao kiểm tra nhiệt độ CPU lại quan trọng? Cách kiểm tra nhiệt độ CPU nhé.


Hướng Dẫn Chi Tiết Cách Đổi Hình Nền Máy Tính Cho Mọi Hệ Điều Hành
Đôi khi, một hình nền đẹp còn có thể truyền cảm hứng, giúp bạn làm việc hiệu quả và vui vẻ hơn. Nếu bạn đang tìm kiếm cách đổi hình nền máy tính một cách dễ dàng và nhanh chóng, bài viết này chính là dành cho bạn! Devwork sẽ hướng dẫn chi tiết từng bước cho các hệ điều hành phổ biến nhất, từ Windows đến macOS và thậm chí cả Linux, cùng với những mẹo hay để tối ưu hóa trải nghiệm của bạn.

5 phần mềm xóa file cứng đầu tốt nhất và những lưu ý khi xóa
Việc xóa file cứng đầu một cách an toàn là rất quan trọng để bảo vệ dữ liệu cá nhân và tránh mất mát thông tin nhạy cảm. Tuy nhiên, không phải ai cũng biết cách thực hiện điều này một cách hiệu quả. Trong bài viết này, chúng tôi sẽ giới thiệu đến bạn 8 phần mềm xóa file cứng đầu tốt nhất giúp bạn thực hiện việc này một cách dễ dàng và an toàn.
