飙血推荐
  • HTML教程
  • MySQL教程
  • JavaScript基础教程
  • php入门教程
  • JavaScript正则表达式运用
  • Excel函数教程
  • UEditor使用文档
  • AngularJS教程
  • ThinkPHP5.0教程

MySQL 事务

时间:2021-12-04  作者:匿名  

事务是一组连续的数据库操作操作,就像一个单独的工作单元一样执行。换句话说,除非组内的每个单独操作都成功,否则事务将永远不会完成。如果事务中的任何操作失败,则整个事务都将失败。

实际上,您会将许多 SQL 查询组合到一个组中,并将作为事务的一部分一起执行所有这些查询。

交易属性

事务具有以下四个标准属性,通常由首字母缩写词ACID 表示:

  • 原子性- 这确保工作单元内的所有操作都成功完成;否则,事务将在故障点中止,并且之前的操作将回滚到它们之前的状态。

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

  • 隔离- 这使交易能够独立运行并且彼此透明。

  • 持久性- 这确保在系统故障的情况下提交的事务的结果或影响仍然存在。

在 MySQL 中,事务以语句BEGIN WORK开始,以COMMIT或ROLLBACK语句结束。开始和结束语句之间的 SQL 命令构成了事务的主体。

提交和回滚

这两个关键字Commit和Rollback主要用于 MySQL Transactions。

  • 成功完成事务后,应发出 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。

从源编译 MySQL 时,对 InnoDB 表的支持需要特定的编译参数。如果您的 MySQL 版本不支持 InnoDB,请要求您的 Internet 服务提供商构建支持 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)

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

在这里不详细介绍,有兴趣的可以到官网查看更多相关信息。

标签:MySQL事务
搜你所爱
MySQL教程:目录
湘ICP备14001474号-3  投诉建议:234161800@qq.com   部分内容来源于网络,如有侵权,请联系删除。