📜  MariaDB-交易

📅  最后修改于: 2020-11-27 05:34:40             🧑  作者: Mango


事务是顺序的组操作。它们函数单个单元,并且不终止,直到该组中的所有操作成功执行。组中的单个失败会导致整个事务失败,并使其对数据库没有影响。

事务符合ACID(原子性,一致性,隔离性和持久性)-

  • 原子性-通过中止失败并回滚更改来确保所有操作成功。

  • 一致性-确保数据库在成功的事务中应用更改。

  • 隔离-启用独立的交易操作。

  • 持久性-确保在系统故障时成功事务的持久性。

事务语句的开头是START TRANSACTION语句,然后是COMMIT和ROLLBACK语句-

  • 开始交易开始交易。

  • 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;