MySQL 如何实现MySQL事务?

MySQL 如何实现MySQL事务?

我们知道,在一个事务中,语句作为单元执行。如果事务中的任何操作失败,整个事务将失败并应回滚;否则,语句所做的任何更改都将保存到数据库中。为了实现一个事务,MySQL提供了以下语句:

阅读更多:MySQL 教程

START TRANSACTION

正如其名称所示,该语句开始一个事务。基本上,它通知MySQL跟随的语句应该被视为一个单一的工作单元,直到该事务已经结束。

COMMIT

COMMIT语句提交对数据库的更改。换句话说,当成功完成事务时,应发出COMMIT命令,以便对所有涉及表的更改生效。

ROLLBACK

ROLLBACK命令撤销语句所做的任何更改,并将数据库返回到之前的状态,即在事务开始时的状态。

示例

下面是一个示例,展示如何实现MySQL事务:

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

mysql> INSERT INTO Marks Values(1, 'Aarav','Maths',50);
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO Marks Values(2, 'Harshit','Maths',55);
Query OK, 1 row affected (0.00 sec)

mysql> COMMIT;
Query OK, 0 rows affected (0.06 sec)

在此示例中,事务由START TRANSACTION语句启动。然后执行两个INSERT语句,后跟一个COMMIT语句。COMMIT语句将保存对数据库的更改,可以从以下结果集中观察到,该结果集显示已将值插入表中:

mysql> SELECT * FROM Marks;
 +------+---------+---------+-------+
| Id   | Name    | Subject | Marks |
+------+---------+---------+-------+
| 1    | Aarav   | Maths   | 50    |
| 2    | Harshit | Maths   | 55    |
+------+---------+---------+-------+
2 rows in set (0.00 sec)

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

mysql> INSERT INTO Marks Values(1, 'Aarav','History',40);
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO Marks Values(1, 'Harshit','History',48);
Query OK, 1 row affected (0.00 sec)

mysql> ROLLBACK;
Query OK, 0 rows affected (0.04 sec)

在此示例中,事务由START TRANSACTION语句启动。然后执行两个INSERT语句,后跟一个ROLLBACK语句。ROLLBACK语句将撤销对数据库所做的更改,可以从以下结果集中观察到,该结果集显示尚未插入新值到表中:

mysql> SELECT * FROM Marks;
+------+---------+---------+-------+
| Id   | Name    | Subject | Marks |
+------+---------+---------+-------+
| 1    | Aarav   | Maths   | 50    |
| 1    | Harshit | Maths   | 55    |
+------+---------+---------+-------+
2 rows in set (0.00 sec)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程