MySQL的autocommit是一個非常重要的設置,它決定了當用戶執行一個事務的時候,是自動提交還是需要手動提交。autocommit默認是1,也就是說如果沒有顯式指定事務,MySQL會將每個SQL語句都視作在一個事務中,并自動提交。
但是,在一些特殊的情況下,我們需要手動控制事務的提交行為,這時候就需要把autocommit設置為0。下面是一個簡單的示例:
mysql>SET autocommit=0; -- 把autocommit設置為0 Query OK, 0 rows affected (0.00 sec) mysql>START TRANSACTION; -- 開始一個事務 Query OK, 0 rows affected (0.00 sec) mysql>INSERT INTO `users` (`name`, `age`) VALUES ('Tom', 18); -- 執行SQL語句 Query OK, 1 row affected (0.00 sec) mysql>INSERT INTO `orders` (`user_id`, `product_name`, `price`) VALUES (1, 'book', 20); -- 執行SQL語句 Query OK, 1 row affected (0.00 sec) mysql>COMMIT; -- 提交事務 Query OK, 0 rows affected (0.00 sec)
這個示例展示了如何手動控制事務的提交行為。首先把autocommit設置為0,然后開始一個事務,執行一些SQL語句,最后手動提交事務。
需要注意的是,如果不手動提交事務而是直接關閉MySQL連接,那么事務也會自動回滾。所以,在手動控制事務的提交行為時一定要特別小心。