开发手册 欢迎您!
软件开发者资料库

MySQLi - 事务

MySQL事务 - 从简单和简单的步骤学习MySQLi,从基本到高级概念,包括简介,安装,管理,PHP语法,连接,创建,删除,信息,选择数据库,数据类型,创建,删除,克隆表,插入查询,选择查询,Where子句,更新查询,删除查询,类似子句,排序结果,使用连接,NULL值,正则表达式,事务,更改命令,索引,临时,使用序列,处理重复。

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

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

事务属性

交易具有以下四种标准属性,通常用首字母缩略词ACID表示;

  • Atomicity : 确保工作单位内的所有操作都成功完成;否则,交易在失败时中止,之前的操作将回滚到以前的状态.

  • 一致性 : 确保数据库在成功提交的事务中正确更改状态.

  • 隔离 : 使交易能够独立运作并相互透明.

  • 耐久性 : 确保在系统出现故障时,提交的事务的结果或效果仍然存在.

在MySQL中,事务以语句BEGIN开头工作并以COMMIT或ROLLBACK语句结束.开始和结束语句之间的SQLi命令构成了事务的大部分.

COMMIT和ROLLBACK

这两个关键字提交回滚主要用于MySQL事务.

  • 成功完成交易后,应发出COMMIT命令,以便对所有相关表的更改生效.

  • 如果发生故障,应发出ROLLBACK命令以返回事务中引用的每个表都是先前的状态.

您可以通过设置名为的会话变量来控制事务的行为AUTOCOMMIT 的.如果AUTOCOMMIT设置为1(默认值),那么每个SQL语句(在事务内或不在事务中)都被视为完整事务,并在完成时默认提交.当AUTOCOMMIT设置为0时,通过发出SET AUTOCOMMIT = 0命令,后续的一系列语句就像一个事务,并且在发出显式COMMIT语句之前不会提交任何活动.

你可以使用 mysqli_query()函数在PHP中执行这些SQL命令.

事务上的通用示例

此序列事件独立于所使用的编程语言;逻辑路径可以用您创建应用程序的任何语言创建.

您可以使用 mysqli_query()函数在PHP中执行这些SQL命令./p>

  • 通过发出SQL命令开始交易开始工作.

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

  • 检查是否没有错误和所有内容根据您的要求.

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

MySQLi中的交易安全表类型

您不能直接使用交易,但是它们不安全且无法保证.如果您计划在MySQLi编程中使用事务,那么您需要以特殊方式创建表.有许多类型的表支持事务,但最常用的是 InnoDB .

从源代码编译MySQLi时,对InnoDB表的支持需要特定的编译参数.如果您的MySQLi版本没有InnoDB支持,请让您的Internet服务提供商构建一个支持InnoDB表类型的MySQLi版本,或下载并安装适用于Windows或Linux/UNIX的MySQL-Max二进制发行版,并使用表类型开发环境.

如果您的MySQLi安装支持InnoDB表,只需在表创建语句中添加 TYPE = InnoDB 定义即可.例如,以下代码创建一个名为tutorials_innodb的InnoDB表;

root@host# mysql -u root -p;Enter password:*******mysql> use TUTORIALS;Database changedmysql> create table tutorials_innodb   -> (   -> tutorial_author varchar(40) NOT NULL,   -> tutorial_count  INT   -> ) TYPE = InnoDB;Query OK, 0 rows affected (0.02 sec)

您可以使用其他表格类型如 GEMINI BDB ,但如果它支持这两种类型,则取决于您的安装.