MySQL 事务

MySQL 事务

事务是一组按顺序执行的数据库操作,它被视为一个单个工作单元。换句话说,除非组内的每个单独操作都成功,否则事务永远不会完成。如果事务中的任何操作失败,则整个事务都将失败。

实际上,您将把许多SQL查询组合成一组,并将它们作为事务的一部分一起执行。

事务的属性

事务具有以下四个标准属性,通常使用缩写 ACID 来表示。

  • 原子性 − 这保证了工作单元中的所有操作都成功完成;否则,在失败点事务将被中止,并将之前的操作回滚到原来的状态。

  • 一致性 − 这确保了在成功提交事务后,数据库正确地更改状态。

  • 隔离性 − 这使得事务能够独立于其他事务进行操作,并且对其他事务是透明的。

  • 持久性 − 这确保了在系统失败的情况下,已提交事务的结果或影响会持久存在。

在MySQL中,事务以 BEGIN WORK 语句开始,以 COMMITROLLBACK 语句结束。起止语句之间的SQL命令组成了事务的主体部分。

COMMIT和ROLLBACK

这两个关键字 COMMITROLLBACK 主要用于MySQL事务。

  • 当成功完成一个事务时,应该发出COMMIT命令,以便对所有涉及的表的更改生效。

  • 如果发生故障,则应该发出ROLLBACK命令,将事务中引用的每个表恢复到其先前的状态。

您可以通过设置名为 AUTOCOMMIT 的会话变量来控制事务的行为。如果AUTOCOMMIT设置为1(默认值),那么每个SQL语句(无论是否在事务内)都被认为是一个完整的事务,并且在完成时默认提交。

当AUTOCOMMIT设置为0时,通过发出 SET AUTOCOMMIT = 0 命令,后续的一系列语句就像一个事务,没有活动会被提交,直到发出显式的COMMIT语句。

您可以使用 mysql_query() 函数在PHP中执行这些SQL命令。

一个关于事务的通用示例

这个事件序列与使用的编程语言无关。逻辑路径可以在您用来创建应用程序的任何语言中创建。

您可以使用 mysql_query() 函数在PHP中执行这些SQL命令。

  • 通过发出SQL命令 BEGIN WORK 开始事务。

  • 发出一个或多个SQL命令,如SELECT、INSERT、UPDATE或DELETE。

  • 检查是否没有错误,并且一切都符合您的要求。

  • 如果有任何错误,则发出ROLLBACK命令,否则发出COMMIT命令。

MySQL中的事务安全表类型

您无法直接使用事务,但对于某些例外情况,您可以使用。然而,它们不是安全的和可靠的。如果您计划在MySQL编程中使用事务,那么您需要以特殊方式创建表。有许多类型的表支持事务,但最流行的是 InnoDB

对InnoDB表的支持在编译MySQL源代码时需要一个特定的编译参数。如果您的MySQL版本不支持InnoDB,可以要求您的互联网服务提供商构建支持InnoDB表类型的MySQL版本,或者在Windows或Linux/UNIX上下载和安装 MySQL-Max二进制发行版 ,并在开发环境中使用表类型。

如果您的MySQL安装支持InnoDB表,只需将 TYPE = InnoDB 定义添加到表创建语句中。

例如,下面的代码创建一个名为 tcount_tbl 的InnoDB表 −

root@host# mysql -u root -p password;
Enter password:*******

mysql> use TUTORIALS;
Database changed

mysql> create table tcount_tbl
   -> (
   -> tutorial_author varchar(40) NOT NULL,
   -> tutorial_count  INT
   -> ) **TYPE = InnoDB** ;
Query OK, 0 rows affected (0.05 sec)

有关InnoDB的更多详细信息,您可以点击以下链接− InnoDB

您可以使用其他表类型,如 GEMINIBDB ,但这取决于您的安装是否支持这两种表类型。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程