📜  MySQL事务(1)

📅  最后修改于: 2023-12-03 15:03:08.042000             🧑  作者: Mango

MySQL事务

MySQL事务是指一组数据库操作,这些操作要么全部成功提交,要么全部失败回滚,以保证数据的一致性和完整性。

事务特性

MySQL数据库的事务具有ACID特性,在完全遵循这些特性的情况下,可以保证事务的正确性。

  • 原子性(Atomicity):事务中的所有操作,要么全部成功执行,要么全部失败回滚,不存在部分成功部分失败的情况。
  • 一致性(Consistency):事务执行前后,数据库的状态应该是一致的。也就是说,事务执行前后,应该满足数据完整性和业务逻辑的合法性。
  • 隔离性(Isolation):事务的执行应该是彼此隔离的,不会互相干扰。也就是说,多个事务并发执行时,每个事务的执行和结果对其他事务是不可见的。
  • 持久性(Durability):事务一旦提交,其结果是永久性的,即使发生了系统故障或程序异常也不会丢失。
事务控制语句

MySQL提供了以下几个控制语句来管理事务:

  • START TRANSACTION:开始一个事务。
  • COMMIT:提交一个事务,如果事务没有出错,则会把事务中的所有操作永久保存到数据库并生效。
  • ROLLBACK:回滚一个事务,如果事务出错或者被撤销,则会撤销所有未提交的操作。
  • SAVEPOINT:保存一个断点,用于在回滚事务时回滚到这个断点。
事务示例

下面是一个MySQL事务的示例,其中包含了一个BEGIN语句(相当于START TRANSACTION),两个INSERT语句,一个UPDATE语句,以及一个COMMIT语句。如果出现错误,则会回滚所有操作,并打印错误信息。

BEGIN;
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
INSERT INTO log (user_id, action) VALUES (LAST_INSERT_ID(), 'Inserted a new user');
UPDATE stats SET total_users = total_users + 1;
COMMIT;
参考文献