1. 程式人生 > >MySQL的rollback--事務回滾

MySQL的rollback--事務回滾

MySQL version:5.7
首先:事務回滾只用於DML,不適用於DDL。對於DDL的回滾,以後有時間再說。

關於rollback和commit,MySQL的文件已經說的很詳細了,選擇其中一個簡單的例子再絮叨下:

mysql> CREATE TABLE customer (a INT, b CHAR (20), INDEX (a));
Query OK, 0 rows affected (0.00 sec)
mysql> -- Do a transaction with autocommit turned on.
mysql> START TRANSACTION;
Query OK, 0
rows affected (0.00 sec) mysql> INSERT INTO customer VALUES (10, 'Heikki'); Query OK, 1 row affected (0.00 sec) mysql> COMMIT;

開啟事務,可以用上面例子中的START TRANSACTION;或者簡單的begin;;
提交事務,即確認DML的改動,使用commit;
回滾事務,即要回退掉之前的操作,使用rollback;
另外:如果不提交也不回滾,執行的DML只是在當前會話有效,在其他會話是不生效的(不信你再重新開啟一個連線視窗看看),所以begin一開始,要麼以commit結束,要麼以rollback結束。

在執行較大量的update或delete時,提醒自己一定要用事務事務啊啊!!

參考:
MySQL官方文件:https://dev.mysql.com/doc/refman/8.0/en/innodb-autocommit-commit-rollback.html