- 学习MySQL
- MySQL-主页
- MySQL - 简介
- MySQL-安装
- MySQL - 管理
- MySQL-PHP 语法
- MySQL-连接
- MySQL-创建数据库
- MySQL - 删除数据库
- MySQL - 选择数据库
- MySQL - 数据类型
- MySQL - 创建表
- MySQL - 删除表
- MySQL - 插入查询
- MySQL - 选择查询
- MySQL-Where 子句
- MySQL - 更新查询
- MySQL - 删除查询
- MySQL - Like 子句
- MySQL - 对结果进行排序
- MySQL - 使用连接
- MySQL - NULL 值
- MySQL - 正则表达式
- MySQL - 事务
- MySQL - 更改命令
- MySQL - 索引
- MySQL - 临时表
- MySQL - 克隆表
- MySQL - 数据库信息
- MySQL - 使用序列
- MySQL - 处理重复项
- MySQL - SQL 注入
- MySQL - 数据库导出
- MySQL - 数据库导入
- MySQL 有用资源
- MySQL - 有用的函数
- MySQL - 语句参考
- MySQL - 快速指南
- MySQL - 有用的资源
- MySQL - 讨论
MySQL - 事务
事务是一组连续的数据库操作操作,它的执行就像一个单独的工作单元一样。换句话说,除非组内的每个单独操作都成功,否则事务永远不会完成。如果事务中的任何操作失败,则整个事务将失败。
实际上,您会将许多 SQL 查询组合到一个组中,并将所有这些查询作为事务的一部分一起执行。
交易的属性
事务具有以下四个标准属性,通常由缩写词ACID指代-
Atomics性- 这确保工作单元内的所有操作都成功完成;否则,事务将在故障点中止,并且先前的操作将回滚到之前的状态。
一致性- 这确保数据库在成功提交事务后正确更改状态。
隔离- 这使得事务能够独立运行并且彼此透明。
持久性- 这确保了已提交事务的结果或效果在系统发生故障时仍然存在。
在 MySQL 中,事务以BEGIN WORK语句开始,以COMMIT或ROLLBACK语句结束。开始语句和结束语句之间的 SQL 命令构成了事务的主体。
提交和回滚
Commit和Rollback这两个关键字主要用于MySQL事务。
当事务成功完成后,应发出 COMMIT 命令,以便对所有涉及的表所做的更改生效。
如果发生故障,应发出 ROLLBACK 命令以将事务中引用的每个表返回到其先前的状态。
您可以通过设置名为AUTOCOMMIT 的会话变量来控制事务的Behave。如果 AUTOCOMMIT 设置为 1(默认值),则每个 SQL 语句(无论是否在事务内)都被视为一个完整的事务,并在完成时默认提交。
当 AUTOCOMMIT 设置为 0 时,通过发出SET AUTOCOMMIT = 0命令,后续一系列语句的Behave类似于事务,并且在发出显式 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)
有关 InnoDB 的更多详细信息,您可以单击以下链接 - InnoDB
您可以使用其他表类型,例如GEMINI或BDB,但这取决于您的安装,是否支持这两种表类型。