MariaDB - Transactions

事务是顺序组操作.它们作为一个单元运行,并且在组内的所有操作成功执行之前不会终止.组中的单个故障会导致整个事务失败,并导致它对数据库没有影响.

事务符合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;