MariaDB 事务
事务是一组按顺序执行的操作。它们作为一个单元操作,直到组内的所有操作都成功执行后才结束。组内任何一个操作失败都会导致整个事务失败,并对数据库没有影响。
事务遵循ACID(原子性、一致性、隔离性和持久性)原则 −
- 原子性 − 它通过在失败时中止并回滚更改来确保所有操作的成功。
-
一致性 − 它确保数据库在成功的事务中应用更改。
-
隔离性 − 它使得独立的事务操作成为可能。
-
持久性 − 它确保系统发生故障时成功事务的持久性。
事务语句的开头是START TRANSACTION语句,后面跟着COMMIT和ROLLBACK语句 −
- START TRANSACTION开始事务。
-
COMMIT保存数据的更改。
-
ROLLBACK结束事务,撤销任何更改。
在成功的事务中,执行COMMIT。在失败的情况下,执行ROLLBACK。
注意 − 一些语句会导致隐式提交,在事务中使用这些语句会导致错误。这些语句的示例包括但不限于CREATE、ALTER和DROP。
MariaDB事务还包括SAVEPOINT和LOCK TABLES等选项。SAVEPOINT设置一个恢复点,可以在ROLLBACK时使用。LOCK TABLES允许控制对表的访问,在某些时间段内防止修改。
AUTOCOMMIT变量控制事务的行为。设置为1会将所有操作视为成功的事务,设置为0只有在显式的COMMIT语句时才会持久化更改。
事务的结构
事务语句的一般结构是以START TRANSACTION开始。下一步是插入一个或多个命令/操作,插入检查错误的语句,插入ROLLBACK语句以处理发现的任何错误,最后插入COMMIT语句以在成功的操作上应用更改。
请参考下面给出的示例 −
START TRANSACTION;
SELECT name FROM products WHERE manufacturer = 'XYZ Corp';
UPDATE spring_products SET item = name;
COMMIT;