http://vietjack.com/mysql/index.jsp Copyright © vietjack.com Transaction MySQL Transaction SQL đơn vị công việc thực Database Transaction đơn vị dãy công việc thực theo thứ tự logic hợp lý, thao tác người dùng Database program Một transaction lan truyền nhiều thay đổi tới Database Ví dụ, bạn tạo ghi cập nhật ghi xóa ghi từ bảng, bạn thực transaction bảng Nó quan trọng để điều khiển transaction để bảo đảm toàn vẹn liệu để xử lý Database Error Nói cách khác, Transaction khơng hoàn thành trừ hoạt động riêng bên nhóm thực thành cơng Nếu hoạt động bên Transaction thất bại, tồn Transaction thất bại Thực tế, bạn gộp nhiều truy vấn SQL vào thành nhóm bạn thực thi tất chúng với Transaction Property Transaction MySQL Transaction có property chuẩn thường biết đến với tên lược danh ACID: • Atomicity: bảo đảm tất hoạt động bên đơn vị công việc hồn thành cách thành cơng; khơng, transaction bị ngừng điểm thất bại, hoạt động trước trao trả trạng thái trước • Consistency: bảo đảm Database thay đổi cách xác trạng thái theo transaction ký thác thành cơng • Isolation: cho transaction khả hoạt động cách độc lập không liên quan đến • Durability: bảo đảm kết tác động transaction, mà ký thác, tồn trường hợp hệ thống thất bại Trong MySQL, Transaction bắt đầu với lệnh BEGIN WORK kết thúc với lệnh COMMIT lệnh ROLLBACK Các lệnh SQL lệnh bắt đầu kết thúc cấu tạo nên Transaction http://vietjack.com/ Trang chia sẻ các bài học online miễn phí http://vietjack.com/mysql/index.jsp Copyright © vietjack.com Lệnh COMMIT ROLLBACK MySQL Hai từ khóa Commit Rollback sử dụng chủ yêu cho Transaction MySQL • Khi Transaction hồn thành, lệnh COMMIT nên thông báo tất thay đổi tới bảng liên quan có hiệu • Nếu lỗi xuất hiện, lệnh ROLLBACK nên thông báo để trả bảng tham chiếu Transaction trạng thái trước Bạn điều khiển cách vận hành Transaction việc thiết lập biến session gọi AUTOCOMMIT Nếu AUTOCOMMIT thiết lập (mặc định), lệnh SQL (bên Transaction không) xem Transaction kết thúc ký thác theo mặc định kết thúc Khi AUTOCOMMIT thiết lập 0, việc thơng báo lệnh SET AUTOCOMMIT=0, chuỗi lệnh theo sau hoạt động Transaction khơng có hoạt động ký thác tới lệnh COMMIT tường minh thơng báo Ví dụ chung Transaction MySQL Dãy kiện độc lập với ngơn ngữ chương trình sử dụng; logic path tạo ngơn ngữ bạn sử dụng để tạo ứng dụng Bạn thực thi lệnh SQL PHP sử dụng hàm mysql_query() • Bắt đầu Transaction việc thơng báo lệnh BEGIN WORK • Thơng báo hay nhiều lệnh SQL SELECT, INSERT, UPDATE DELETE • Kiểm tra xem có lỗi hay khơng thứ có theo yêu cầu bạn khơng • Nếu có lỗi nào, bạn thơng báo lệnh ROLLBACK, khơng có, bạn thơng báo lệnh COMMIT Các loại bảng bảo vệ Transaction MySQL Bạn sử dụng Transaction cách trực tiếp, chúng khơng an tồn khơng bảo vệ Nếu bạn muốn sử dụng Transaction lập trình MySQL, bạn cần tạo bảng theo cách đặc biệt Có nhiều loại bảng hỗ trợ cho Transaction loại phổ biến InnoDB http://vietjack.com/ Trang chia sẻ các bài học online miễn phí http://vietjack.com/mysql/index.jsp Copyright © vietjack.com Sự hỗ trợ cho bảng InnoDB yêu cầu tham số biên dịch cụ thể biên dịch MySQL từ nguồn Nếu phiên MySQL bạn khơng có hỗ trợ cho InnoDB, bạn yêu cầu nhà cung cấp dịch vụ Internet để xây dựng phiên MySQL với hỗ trợ cho loại bảng InnoDB tải cài đặt MySQL-Max Binary Distribution cho Windows Linux/UNIX làm việc với loại bảng môi trường phát triển Nếu cài đặt MySQL bạn hỗ trợ bảng InnoDB, bạn cần đơn giản thêm định nghĩaTYPE=InnoDB phần lệnh tạo bảng Ví dụ sau tạo bảng InnoDB gọi sinhvienk60: //Lua chon co so du lieu USE sinhvien; //Tao bang sinhvienk60 CREATE TABLE sinhvienk60 ( ten VARCHAR(40) NOT NULL, diemthi INT ) TYPE=InnoDB; Bạn sử dụng loại bảng khác GEMINI BDB, tùy thuộc vào cài đặt bạn có hỗ trợ loại bảng không http://vietjack.com/ Trang chia sẻ các bài học online miễn phí ... lệnh COMMIT Các loại bảng bảo vệ Transaction MySQL Bạn sử dụng Transaction cách trực tiếp, chúng khơng an tồn khơng bảo vệ Nếu bạn muốn sử dụng Transaction lập trình MySQL, bạn cần tạo bảng theo... cho Transaction MySQL • Khi Transaction hồn thành, lệnh COMMIT nên thông báo tất thay đổi tới bảng liên quan có hiệu • Nếu lỗi xuất hiện, lệnh ROLLBACK nên thông báo để trả bảng tham chiếu Transaction. .. biên dịch MySQL từ nguồn Nếu phiên MySQL bạn khơng có hỗ trợ cho InnoDB, bạn yêu cầu nhà cung cấp dịch vụ Internet để xây dựng phiên MySQL với hỗ trợ cho loại bảng InnoDB tải cài đặt MySQL- Max