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

你可能感兴趣的:(SQL)