开发学院

您的位置:首页>教程>正文

教程正文

​MySQL 事务处理

MySQL 事务处理

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

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

事务的属性:

  事务有以下四个标准属性,通常由缩略词ACID指代:

  1、事务的原子性(Atomicity):一组事务,要么成功;要么撤回。

  2、稳定性(Consistency): 有非法数据(外键约束之类),事务撤回。

  3、隔离性(Isolation):事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度。

  4、可靠性(Durability):软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit选项 决定什么时候吧事务保存到日志里。

  在MySQL中,事务以语句开始,以submit或rollback语句结束。开始和结束语句之间的SQL命令构成事务的主体。

COMMIT和ROLLBACK:

  COMMIT和ROLLBACK这两个关键字主要用于MySQL事务。

  成功完成事务后,应发出commit命令,以便所有相关表的更改生效。

  如果发生故障,应发出一个rollback命令,将事务中引用的每个表返回到以前的状态。

  您可以通过设置称为自动提交的会话变量来控制事务的行为。如果将自动提交设置为1 (默认),则每个SQL语句(事务中或不在事务中)被视为一个完整的事务,在它完成后将默认为提交。当自动提交设置为0时,通过发出set自动提交=0命令,后续的系列语句类似于事务,在发出显式commit语句之前,不会发生任何活动。

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

事务的一般示例

  这种事件序列独立于所使用的编程语言;可以使用用于创建应用程序的语言创建逻辑路径。

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

  通过发出SQL命令开始事务开始工作。

  发出一个或多个SQL命令,例如select、insert、update或delete。

  检查是否没有错误,一切都根据您的要求。

  如果存在任何错误,则发出rollback命令,否则发出commit命令。

MySQL中的事务安全表类型:

  你不能直接使用交易,你可以但他们不会安全和保证。如果您计划在MySQL编程中使用事务,那么需要以特殊的方式创建表。有许多类型的表,它们支持事务,但最流行的是innodb。

  在从源代码编译MySQL时,对innodb表的支持需要特定的编译参数。如果您的MySQL版本没有innodb支持,请让您的internet服务提供商构建一个MySQL版本,并支持innodb表类型,或者  下载并安装windows或linux/unix的最大二进制发行版,并在开发环境中使用表类型。  

  如果MySQL安装支持innodb表,只需将type =innodb定义添加到表创建语句。例如,以下代码创建一个名为tcount的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支持这两种类型,则取决你如何安装。