Kiểm tra mysql nếu giao dịch được mở

Một giao dịch là một nhóm tuần tự các hoạt động thao tác cơ sở dữ liệu, được thực hiện như thể nó là một đơn vị công việc duy nhất. Nói cách khác, một giao dịch sẽ không bao giờ hoàn thành trừ khi từng hoạt động riêng lẻ trong nhóm thành công. Nếu bất kỳ hoạt động nào trong giao dịch không thành công, toàn bộ giao dịch sẽ thất bại

Trên thực tế, bạn sẽ gộp nhiều truy vấn SQL thành một nhóm và bạn sẽ thực hiện tất cả chúng cùng nhau như một phần của giao dịch

Thuộc tính của giao dịch

Các giao dịch có bốn thuộc tính tiêu chuẩn sau, thường được gọi bằng từ viết tắt ACID –

  • Tính nguyên tử - Điều này đảm bảo rằng tất cả các hoạt động trong đơn vị công việc được hoàn thành thành công;

  • Tính nhất quán - Điều này đảm bảo rằng cơ sở dữ liệu thay đổi đúng trạng thái khi giao dịch được thực hiện thành công

  • Cách ly - Điều này cho phép các giao dịch hoạt động độc lập và minh bạch với nhau

  • Độ bền - Điều này đảm bảo rằng kết quả hoặc hiệu quả của một giao dịch đã cam kết vẫn tồn tại trong trường hợp xảy ra lỗi hệ thống

Trong MySQL, các giao dịch bắt đầu bằng câu lệnh BEGIN WORK và kết thúc bằng câu lệnh CAM KẾT hoặc ROLLBACK. Các lệnh SQL giữa các câu lệnh bắt đầu và kết thúc tạo thành phần lớn giao dịch

CAM KẾT và QUAY LẠI

Hai từ khóa Cam kết và Khôi phục chủ yếu được sử dụng cho Giao dịch MySQL

  • Khi một giao dịch thành công được hoàn thành, lệnh COMMIT sẽ được đưa ra để các thay đổi đối với tất cả các bảng liên quan sẽ có hiệu lực

  • Nếu xảy ra lỗi, lệnh ROLLBACK sẽ được đưa ra để trả mọi bảng được tham chiếu trong giao dịch về trạng thái trước đó

Bạn có thể kiểm soát hành vi của giao dịch bằng cách đặt biến phiên có tên là AUTOCOMMIT. Nếu AUTOCOMMIT được đặt thành 1 (mặc định), thì mỗi câu lệnh SQL (trong một giao dịch hoặc không) được coi là một giao dịch hoàn chỉnh và được cam kết theo mặc định khi nó kết thúc

Khi AUTOCOMMIT được đặt thành 0, bằng cách phát lệnh SET AUTOCOMMIT = 0, chuỗi câu lệnh tiếp theo hoạt động giống như một giao dịch và không có hoạt động nào được thực hiện cho đến khi một câu lệnh CAM KẾT rõ ràng được đưa ra

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

Một ví dụ chung về giao dịch

Chuỗi sự kiện này độc lập với ngôn ngữ lập trình được sử dụng. Đường dẫn logic có thể được tạo bằng 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 này trong PHP bằng cách sử dụng hàm mysql_query()

  • Bắt đầu giao dịch bằng cách ban hành lệnh SQL BEGIN WORK

  • Đưa ra một hoặc nhiều lệnh SQL như CHỌN, CHÈN, CẬP NHẬT hoặc XÓA

  • Kiểm tra xem không có lỗi và mọi thứ đều theo yêu cầu của bạn

  • Nếu có lỗi thì ra lệnh ROLLBACK, ngược lại ra lệnh COMMIT

Các loại bảng an toàn giao dịch trong MySQL

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

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ợ InnoDB, hãy yêu cầu Nhà cung cấp dịch vụ Internet của bạn xây dựng phiên bản MySQL có hỗ trợ cho các loại bảng InnoDB hoặc tải xuống và cài đặt Bản phân phối nhị phân MySQL-Max cho Windows hoặc Linux/UNIX và làm việc với loại bảng trong

Nếu cài đặt MySQL của bạn hỗ trợ các bảng InnoDB, chỉ cần thêm định nghĩa TYPE = InnoDB vào câu lệnh tạo bảng

Ví dụ: đoạn mã sau tạo một bảng InnoDB có tên là tcount_tbl −

root@host# mysql -u root -p password;
Enter password:*******

mysql> use TUTORIALS;
Database changed

mysql> create table tcount_tbl
   -> (
   -> tutorial_author varchar(40) NOT NULL,
   -> tutorial_count  INT
   -> ) TYPE = InnoDB;
Query OK, 0 rows affected (0.05 sec)

Để biết thêm chi tiết về InnoDB, bạn có thể nhấp vào liên kết sau −InnoDB

Bạn có thể sử dụng các loại bảng khác như GEMINI hoặc BDB, nhưng tùy thuộc vào cài đặt của bạn, nó có hỗ trợ hai loại bảng này hay không

  • Nhà
  • Trang chủ MySQL
  • Cài đặt MySQL
  • Công cụ quản trị MySQL
  • Trình kết nối và API của MySQL
  • Công cụ lưu trữ MySQL (loại bảng)
  • Cấu trúc ngôn ngữ MySQL
  • Các kiểu dữ liệu MySQL
  • Kết nối và ngắt kết nối với MySQL
  • MySQL TẠO CƠ SỞ DỮ LIỆU, BẢNG
  • RÀNG BUỘC MySQL
  • MySQL TẠO CHỈ SỐ
  • BẢNG THAY ĐỔI MySQL
  • Phân vùng MySQL
  • Chèn MySQL
  • Cập nhật MySQL
  • Xóa MySQL
  • Câu lệnh chọn cơ bản của MySQL
  • ĐOÀN KẾT MySQL
  • Chức năng tổng hợp và nhóm
  • Các hàm và toán tử MySQL
  • Truy vấn nâng cao trong MySQL
  • MySQL THAM GIA
  • Truy vấn con MySQL
  • Thủ tục MySQL
  • Trình kích hoạt MySQL
  • Giao dịch MySQL
  • Chế độ xem MySQL
  • Bảo mật MySQL
  • Các lệnh hiển thị MySQL
  • MySQL DROP
  • Xuất và nhập dữ liệu giữa mysql và microsoft excel
  • Sao lưu và khôi phục MySQL
  • Làm việc với PDO
  • Tổng quan về cụm MySQL
  • Câu hỏi MySQL Câu trả lời
  • bài tập mysql

Giao dịch MySQL Cập nhật lần cuối vào ngày 19 tháng 8 năm 2022 21. 51. 24 (UTC/GMT +8 giờ)

Giới thiệu về giao dịch

Một giao dịch là một đơn vị logic của công việc chứa một hoặc nhiều câu lệnh SQL. Giao dịch là đơn vị nguyên tử của công việc có thể được cam kết hoặc khôi phục. Khi một giao dịch thực hiện nhiều thay đổi đối với cơ sở dữ liệu, tất cả các thay đổi đều thành công khi giao dịch được thực hiện hoặc tất cả các thay đổi sẽ được hoàn tác khi giao dịch được khôi phục

Một giao dịch bắt đầu với câu lệnh SQL thực thi đầu tiên. Một giao dịch kết thúc khi nó được cam kết hoặc khôi phục, rõ ràng bằng câu lệnh CAM KẾT hoặc ROLLBACK hoặc hoàn toàn khi sử dụng DDL (Ngôn ngữ định nghĩa dữ liệu (DDL) để quản lý cấu trúc bảng và chỉ mục cũng như các câu lệnh CREATE, ALTER, RENAME, DROP và TRUNCATE

nội dung

Tìm hiểu khái niệm giao dịch

Để hiểu khái niệm về giao dịch, hãy xem xét cơ sở dữ liệu ngân hàng. Giả sử một khách hàng của ngân hàng chuyển tiền từ tài khoản tiết kiệm (SB a/c) sang tài khoản hiện tại (CA a/c), sao kê sẽ được chia thành bốn khối

  • Nợ SB a/c
  • Tín dụng CA a / c
  • Ghi vào Nhật ký giao dịch
  • Kết thúc giao dịch

Câu lệnh SQL để ghi nợ SB a/c như sau

CẬP NHẬT sb_accounts
Số dư SET = số dư - 1000
WHERE account_no = 932656 ;

Câu lệnh SQL để ghi có OD a/c như sau

CẬP NHẬT ca_accounts
Số dư SET = số dư + 1000
WHERE account_no = 933456 ;

Câu lệnh SQL để ghi vào nhật ký giao dịch như sau

CHÈN VÀO GIÁ TRỊ tạp chí
(100896, 'Tansaction on Benjamin Hampshair a/c', '26-AUG-08' 932656, 933456, 1000);

Câu lệnh SQL cho Giao dịch kết thúc như sau

CAM KẾT CÔNG VIỆC;

MySQL và Mô hình ACID

ACID (Nguyên tử, Tính nhất quán, Cách ly, Độ bền) là một tập hợp các thuộc tính đảm bảo rằng các giao dịch cơ sở dữ liệu được xử lý một cách đáng tin cậy. Trong MySQL, công cụ lưu trữ InnoDB hỗ trợ các tính năng tuân thủ ACID. Các phần sau thảo luận về cách các tính năng của MySQL, cụ thể là công cụ lưu trữ InnoDB, tương tác với các danh mục của mô hình ACID

nguyên tử. Khía cạnh nguyên tử của mô hình ACID chủ yếu liên quan đến các giao dịch InnoDB. Các tính năng MySQL liên quan bao gồm

  • Cài đặt tự động cam kết
  • câu lệnh CAM KẾT
  • câu lệnh QUAY LẠI
  • Dữ liệu hoạt động từ các bảng INFORMATION_SCHEMA

Tính nhất quán. Khía cạnh tính nhất quán của mô hình ACID chủ yếu liên quan đến quá trình xử lý InnoDB nội bộ để bảo vệ dữ liệu khỏi sự cố. Các tính năng MySQL liên quan bao gồm

  • Bộ đệm ghi kép InnoDB
  • Khôi phục sự cố InnoDB

Sự cô lập. Khía cạnh cách ly của mô hình ACID chủ yếu liên quan đến các giao dịch InnoDB, cụ thể là mức độ cách ly áp dụng cho từng giao dịch. Các tính năng MySQL liên quan bao gồm

  • Cài đặt tự động cam kết
  • Câu lệnh SET ISOLATION LEVEL
  • Chi tiết cấp thấp về khóa InnoDB. Trong quá trình điều chỉnh hiệu suất, bạn sẽ thấy những chi tiết này thông qua bảng INFORMATION_SCHEMA

Độ bền. Khía cạnh độ bền của mô hình ACID liên quan đến các tính năng phần mềm MySQL tương tác với cấu hình phần cứng cụ thể của bạn. Do có nhiều khả năng tùy thuộc vào khả năng của CPU, mạng và thiết bị lưu trữ của bạn, khía cạnh này là phức tạp nhất để đưa ra các hướng dẫn cụ thể cho. Các tính năng MySQL liên quan bao gồm

  • Bật và tắt bộ đệm ghi kép InnoDB bằng tùy chọn cấu hình innodb_doublewrite
  • Configuration option innodb_flush_log_at_trx_commit
  • Tùy chọn cấu hình sync_binlog
  • Tùy chọn cấu hình innodb_file_per_table
  • Bộ đệm ghi trong thiết bị lưu trữ, chẳng hạn như ổ đĩa, SSD hoặc mảng RAID
  • Bộ nhớ đệm được hỗ trợ bằng pin trong thiết bị lưu trữ
  • Hệ điều hành được sử dụng để chạy MySQL, cụ thể là hỗ trợ lệnh gọi hệ thống fsync()
  • Nguồn cung cấp điện liên tục (UPS) bảo vệ nguồn điện cho tất cả các máy chủ và thiết bị lưu trữ chạy máy chủ MySQL và lưu trữ dữ liệu MySQL
  • Chiến lược sao lưu của bạn, chẳng hạn như tần suất và loại sao lưu cũng như thời gian lưu giữ sao lưu
  • Đối với các ứng dụng dữ liệu được lưu trữ hoặc phân tán, các đặc điểm cụ thể của trung tâm dữ liệu nơi đặt phần cứng cho máy chủ MySQL và kết nối mạng giữa các trung tâm dữ liệu

Giao dịch MySQL

MySQL (ở đây chúng tôi duy trì phiên bản 5. 6) hỗ trợ các giao dịch cục bộ (trong một phiên khách hàng nhất định) thông qua các câu lệnh như SET tự động cam kết, BẮT ĐẦU GIAO DỊCH, CAM KẾT và ROLLBACK. Đây là cú pháp BẮT ĐẦU GIAO DỊCH, CAM KẾT và ROLLBACK

START TRANSACTION
   transaction_characteristic [, transaction_characteristic] ...] 

transaction_characteristic:     
    WITH CONSISTENT SNAPSHOT    
    | READ WRITE    
    | READ ONLY    

BEGIN [WORK]  
COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]  
ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]  
SET autocommit = {0 | 1}

Những tuyên bố này cung cấp quyền kiểm soát đối với việc sử dụng các giao dịch

  • Câu lệnh START TRANSACTION hoặc BEGIN bắt đầu một giao dịch mới
  • CAM KẾT cam kết giao dịch hiện tại, làm cho những thay đổi của nó trở thành vĩnh viễn.  
  • ROLLBACK khôi phục giao dịch hiện tại, hủy các thay đổi của nó
  • Câu lệnh SETautocommit vô hiệu hóa hoặc bật chế độ tự động cam kết mặc định cho phiên hiện tại

Theo mặc định, MySQL chạy với chế độ autocommit được bật. Điều này có nghĩa là ngay sau khi bạn thực hiện một câu lệnh cập nhật (sửa đổi) một bảng, MySQL sẽ lưu trữ bản cập nhật trên đĩa để làm cho nó tồn tại vĩnh viễn. Thay đổi không thể được khôi phục

Hiện tại (theo mặc định), MySQL chạy với chế độ autocommit được bật

mysql> select * from student_mast;
+------------+------------------+----------+
| STUDENT_ID | NAME             | ST_CLASS |
+------------+------------------+----------+
|          2 | Neena  Kochhar   |        9 |
|          3 | Lex  De Haan     |        9 |
|          4 | Alexander Hunold |       11 |
+------------+------------------+----------+
3 rows in set (0.09 sec)

Hãy thực hiện một lệnh cập nhật

mysql>mysql> UPDATE STUDENT_MAST SET ST_CLASS=8 WHERE STUDENT_ID=2;
Query OK, 1 row affected (0.08 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql>mysql> select * from student_mast;
+------------+------------------+----------+
| STUDENT_ID | NAME             | ST_CLASS |
+------------+------------------+----------+
|          2 | Neena  Kochhar   |        8 |
|          3 | Lex  De Haan     |        9 |
|          4 | Alexander Hunold |       11 |
+------------+------------------+----------+
3 rows in set (0.00 sec)

Bây giờ hãy thực hiện lệnh ROLLBACK để quay lại giai đoạn trước

mysql>mysql> ROLLBACK;
Query OK, 0 rows affected (0.03 sec)
mysql>mysql> select * from student_mast;
+------------+------------------+----------+
| STUDENT_ID | NAME             | ST_CLASS |
+------------+------------------+----------+
|          2 | Neena  Kochhar   |        8 |
|          3 | Lex  De Haan     |        9 |
|          4 | Alexander Hunold |       11 |
+------------+------------------+----------+
3 rows in set (0.00 sec)
 

Không có khôi phục khi MySQL chạy với chế độ tự động xác nhận được bật

Để tắt chế độ tự động cam kết, hãy sử dụng câu lệnh BẮT ĐẦU GIAO DỊCH. Xem ví dụ sau

mysql>mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)

mysql> UPDATE STUDENT_MAST SET ST_CLASS=10 WHERE STUDENT_ID=2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from student_mast;
+------------+------------------+----------+
| STUDENT_ID | NAME             | ST_CLASS |
+------------+------------------+----------+
|          2 | Neena  Kochhar   |       10 |
|          3 | Lex  De Haan     |        9 |
|          4 | Alexander Hunold |       11 |
+------------+------------------+----------+
3 rows in set (0.00 sec)
mysql> ROLLBACK;
Query OK, 0 rows affected (0.07 sec)

mysql> select * from student_mast;
+------------+------------------+----------+
| STUDENT_ID | NAME             | ST_CLASS |
+------------+------------------+----------+
|          2 | Neena  Kochhar   |        8 |
|          3 | Lex  De Haan     |        9 |
|          4 | Alexander Hunold |       11 |
+------------+------------------+----------+
3 rows in set (0.00 sec)

Các câu lệnh MySQL không thể Roll Back và các câu lệnh gây ra Cam kết ngầm

Trong MySQL, một số câu lệnh không thể được khôi phục. Các câu lệnh DDL chẳng hạn như cơ sở dữ liệu CREATE hoặc DROP, các bảng CREATE, ALTER hoặc DROP hoặc các thủ tục được lưu trữ. Bạn nên thiết kế một giao dịch không có những câu lệnh này

Các câu lệnh được liệt kê trong phần này (và bất kỳ từ đồng nghĩa nào với chúng) hoàn toàn kết thúc bất kỳ giao dịch nào đang hoạt động trong phiên hiện tại, như thể bạn đã thực hiện CAM KẾT trước khi thực hiện câu lệnh

  • Các câu lệnh ngôn ngữ định nghĩa dữ liệu (DDL) xác định hoặc sửa đổi các đối tượng cơ sở dữ liệu. THAY ĐỔI CƠ SỞ DỮ LIỆU. NÂNG CẤP TÊN THƯ MỤC DỮ LIỆU, THAY ĐỔI SỰ KIỆN, THAY ĐỔI THỦ TỤC, THAY ĐỔI MÁY CHỦ, THAY ĐỔI BẢNG, THAY ĐỔI VIEW, TẠO CƠ SỞ DỮ LIỆU, TẠO SỰ KIỆN, TẠO CHỈ MỤC, TẠO THỦ TỤC, TẠO MÁY CHỦ, TẠO BẢNG, TẠO KÍCH HOẠT, TẠO VIEW, DROP DATABASE, DROP EVENT,
  • ALTER FUNCTION, CREATE FUNCTION và DROP FUNCTION cũng gây ra một cam kết ngầm định khi được sử dụng với các hàm được lưu trữ, nhưng không phải với UDF. (CHỨC NĂNG THAY ĐỔI chỉ có thể được sử dụng với các chức năng được lưu trữ. )
  • ALTER TABLE, CREATE TABLE và DROP TABLE không thực hiện giao dịch nếu từ khóa TEMPORARY được sử dụng
  • Các câu lệnh ngầm sử dụng hoặc sửa đổi các bảng trong cơ sở dữ liệu MySQL. TẠO NGƯỜI DÙNG, THẢ NGƯỜI DÙNG, CẤP, ĐỔI TÊN NGƯỜI DÙNG, THU HỒI, ĐẶT MẬT KHẨU
  • Kiểm soát giao dịch và báo cáo khóa. BEGIN, LOCK TABLES, SET autocommit = 1 (nếu giá trị chưa phải là 1), BẮT ĐẦU GIAO DỊCH, MỞ KHÓA BẢNG
  • Báo cáo tải dữ liệu. TẢI DỮ LIỆU VÀO TẬP TIN. LOAD DATA INFILE chỉ gây ra một cam kết ngầm cho các bảng sử dụng công cụ lưu trữ NDB
  • Báo cáo hành chính. PHÂN TÍCH BẢNG, CHỈ MỤC BỘ NHỚ, BẢNG KIỂM TRA, TẢI CHỈ SỐ VÀO BỘ NHỚ, TỐI ƯU BẢNG, BẢNG SỬA CHỮA
  • Báo cáo kiểm soát sao chép. Bắt đầu với MySQL 5. 6. 7. BẮT ĐẦU NÔ LỆ, DỪNG NÔ LỆ, THIẾT LẬP LẠI NÔ LỆ, THAY ĐỔI MASTER THÀNH

SAVEPOINT, QUAY LẠI VỀ SAVEPOINT và PHÁT HÀNH SAVEPOINT

InnoDB hỗ trợ các câu lệnh SQL SAVEPOINT, ROLLBACK TO SAVEPOINT, RELEASE SAVEPOINT và từ khóa WORK tùy chọn cho ROLLBACK

Câu lệnh SAVEPOINT đặt điểm lưu trữ giao dịch được đặt tên với tên của mã định danh. Nếu giao dịch hiện tại có một điểm lưu trữ có cùng tên, thì điểm lưu trữ cũ sẽ bị xóa và một điểm lưu trữ mới được đặt

Câu lệnh ROLLBACK TO SAVEPOINT khôi phục giao dịch về điểm lưu trữ được đặt tên mà không chấm dứt giao dịch. Các sửa đổi mà giao dịch hiện tại được thực hiện đối với các hàng sau khi đặt điểm lưu trữ sẽ được hoàn tác trong quá trình khôi phục, nhưng InnoDB không giải phóng các khóa hàng được lưu trữ trong bộ nhớ sau điểm lưu trữ

Đây là cú pháp

SAVEPOINT identifier  
ROLLBACK [WORK] TO [SAVEPOINT] identifier  
RELEASE SAVEPOINT identifier

Bảng KHÓA và MỞ KHÓA

MySQL cho phép các phiên máy khách có được các khóa bảng một cách rõ ràng nhằm mục đích hợp tác với các phiên khác để truy cập vào các bảng hoặc để ngăn các phiên khác sửa đổi các bảng trong các khoảng thời gian khi một phiên yêu cầu quyền truy cập độc quyền vào chúng. Một phiên chỉ có thể lấy hoặc giải phóng các khóa cho chính nó. Một phiên không thể lấy khóa cho phiên khác hoặc giải phóng khóa do phiên khác nắm giữ

LOCK TABLES có được các khóa bảng một cách rõ ràng cho phiên máy khách hiện tại. Khóa bảng có thể được mua cho các bảng cơ sở hoặc dạng xem. Bạn phải có đặc quyền LOCK TABLES và đặc quyền CHỌN cho từng đối tượng được khóa

UNLOCK TABLES giải phóng rõ ràng bất kỳ khóa bảng nào do phiên hiện tại nắm giữ. LOCK TABLES hoàn toàn giải phóng bất kỳ khóa bảng nào được giữ bởi phiên hiện tại trước khi có được các khóa mới

Làm cách nào để kiểm tra xem autocommit có được bật trong MySQL không?

Để xác định trạng thái hiện tại của chế độ tự động cam kết, hãy sử dụng lệnh SQL SELECT @@autocommit .

Giao dịch có phải là bảng khóa không?

Khái niệm giao dịch và khóa là khác nhau. Tuy nhiên, giao dịch đã sử dụng khóa để giúp giao dịch tuân theo các nguyên tắc ACID . Nếu bạn muốn bảng ngăn người khác đọc/ghi cùng lúc khi bạn đang đọc/ghi, bạn cần có khóa để thực hiện việc này.

Bế tắc trong MySQL là gì?

Bế tắc là tình huống trong đó các giao dịch khác nhau không thể tiến hành vì mỗi giao dịch giữ một khóa mà giao dịch kia cần . Bởi vì cả hai giao dịch đều đang đợi một tài nguyên có sẵn, nên không bao giờ giải phóng các khóa mà nó đang nắm giữ.

Làm cách nào để bật CAM KẾT tự động trong MySQL?

Để sử dụng giao dịch nhiều câu lệnh, tắt chế độ tự động cam kết bằng câu lệnh SQL SET autocommit = 0 và kết thúc mỗi giao dịch bằng CAM KẾT hoặc ROLLBACK dưới dạng . Để bật chế độ tự động cam kết, hãy bắt đầu mỗi giao dịch bằng START TRANSACTION và kết thúc bằng CAM KẾT hoặc ROLLBACK.