14/08/2018, 11:41

Transaction trong MySQL

Transaction trong SQL 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 ...

Transaction trong SQL 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.

Nói cách khác, một Transaction sẽ không bao giờ hoàn thành trừ khi mỗi hoạt động riêng bên trong nhóm được thực hiện thành công. Nếu bất kỳ hoạt động nào bên trong Transaction thất bại, thì toàn bộ Transaction đó sẽ thất bại.

Thực tế, bạn sẽ gộp nhiều truy vấn SQL vào thành một nhóm và bạn sẽ thực thi tất cả chúng cùng với nhau như là một Transaction.

Property của Transaction trong MySQL

Transaction có 4 property chuẩn và thường được biết đến với tên lược danh là ACID:

Trong MySQL, các Transaction bắt đầu với lệnh BEGIN WORK và kết thúc với hoặc một lệnh COMMIT hoặc lệnh ROLLBACK. Các lệnh SQL giữa các lệnh bắt đầu và kết thúc cấu tạo nên Transaction.

Lệnh COMMIT và ROLLBACK trong MySQL

Hai từ khóa CommitRollback được sử dụng chủ yêu cho Transaction trong MySQL.

Bạn có thể điều khiển cách vận hành của một Transaction bằng việc thiết lập biến session gọi là AUTOCOMMIT. Nếu AUTOCOMMIT được thiết lập là 1 (mặc định), thì mỗi lệnh SQL (bên trong một Transaction hoặc không) được xem như là một Transaction đã kết thúc và được ký thác theo mặc định khi nó kết thúc. Khi AUTOCOMMIT được thiết lập là 0, thì bằng việc thông báo lệnh SET AUTOCOMMIT=0, các chuỗi lệnh theo sau hoạt động như một Transaction và không có hoạt động nào được ký thác tới khi một lệnh COMMIT tường minh được thông báo.

Ví dụ chung về Transaction trong MySQL

Dãy sự kiện là độc lập với ngôn ngữ chương trình được sử dụng; logic path có thể được tạo trong bất kỳ ngôn ngữ nào bạn sử dụng để tạo ứng dụng của mình.

Bạn có thể thực thi các lệnh SQL trong PHP bởi sử dụng hàm mysql_query().

Các loại bảng bảo vệ Transaction trong MySQL

Bạn không thể sử dụng các Transaction một cách trực tiếp, bởi vì chúng không an toàn và không được bảo vệ. Nếu bạn muốn sử dụng các Transaction trong lập trình MySQL, thì bạn cần tạo các bảng theo một cách đặc biệt. Có nhiều loại bảng hỗ trợ cho các Transaction nhưng loại phổ biến nhất là InnoDB.

Sự hỗ trợ cho các bảng InnoDB yêu cầu một tham số biên dịch cụ thể khi biên dịch MySQL từ nguồn. Nếu phiên bản MySQL của 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 một phiên bản MySQL với sự hỗ trợ cho loại bảng InnoDB hoặc tải và cài đặt MySQL-Max Binary Distribution cho Windows hoặc Linux/UNIX và làm việc với loại bảng này trong môi trường phát triển.

Nếu cài đặt MySQL của bạn hỗ trợ các bảng InnoDB, bạn chỉ cần đơn giản thêm định nghĩa TYPE=InnoDB ở phần lệnh tạo bảng. Ví dụ sau tạo một bảng InnoDB gọi là 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 có thể sử dụng các loại bảng khác như GEMINI hoặc BDB, tùy thuộc vào cài đặt của bạn có hỗ trợ các loại bảng này không.

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 MySQL phổ biến khác tại code24h:

0