什麼是交易(Transaction 很多人稱為事務)功能? 交易(或事務)指的是一連串的指令，並且把它們作為一個單一的工作單位執行。這些操作要嘛全部執行，要嘛全部取消。
交易主要用於保證資料的一致性和完整性，特別是在多用戶環境中，其中多個操作可能同時對相同的資料進行讀寫。
例如一個訂單的完成，包含「將庫存資料表的數量更新」，然後「將訂購的商品資料寫入訂單資料表」。
這兩個動作如果不是都完成，就會產生問題。例如庫存資料表的數量已經-1，但是訂單資料沒有寫入，那麼庫存數量就發生錯誤了；或是訂單資料已經寫入，但是庫存的數量-1發生錯誤，這樣也會發生資料一致性的問題。
例如以下的PHP程式 :
以上的程式就是一個交易 (事務) 的操作 :
SELECT @AUTOCOMMIT;
SELECT AUTOCOMMIT;
這個語句用於在選定的數據行上放置一個共享鎖。共享鎖允許多個交易讀取同一數據行，但阻止其他交易對這些被鎖定的行進行修改，直到鎖定的交易完成。這主要用於需要讀取但不修改數據的情況，並且需要確保在讀取操作進行時，這些數據不會被其他交易修改。
SELECT * FROM inventory WHERE product_id = 101 LOCK IN SHARE MODE;
這個語句用於在選定的數據行上放置一個排他鎖（exclusive lock）。排他鎖阻止其他所有交易讀取或修改這些被鎖定的行，直到當前交易完成。這是一種更嚴格的鎖定方式，常用於你需要在讀取數據後進行修改的情況。
SELECT balance FROM accounts WHERE account_id = 456 FOR UPDATE;
表級鎖定 (Table Level Lock) 可以分為兩種類型：讀鎖定（READ LOCK）和寫鎖定（WRITE LOCK）。這些鎖定通常用於更簡單的存取控制策略，通常在較少競爭或者不需要高度並行的環境下使用。
LOCK TABLES employees READ;
SELECT * FROM employees WHERE department = 'HR';
UNLOCK TABLES;
UPDATE employees SET salary = salary * 1.1 WHERE department = 'HR';
UNLOCK TABLES;
FROM INFORMATION_SCHEMA.TABLES
WHERE engine = 'innodb';
MySQL資料庫引擎InnoDB與MyISAM有何差異?