MySQL事务


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

实际上,你会将许多SQL查询组合到一个组中,并将它们作为事务的一部分一起执行。

事务的属性


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

  • 原子性:这样可以确保工作单元内的所有操作均成功完成;否则,事务将在失败点中止,并且先前的操作将回滚到其先前的状态。

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

  • 隔离性:这使事务能够独立运行并且彼此透明。

  • 持久性:这样可以确保在系统故障的情况下,持久化事务的结果或效果仍然存在。

在MySQL中,事务以以下语句BEGIN WORK开始并以一个COMMIT或者ROLLBACK结尾。开头和结尾语句之间的SQL命令构成了事务的主体。

提交和回滚


这两个关键词CommitRollback主要用于MySQL 事务。

  • 成功完成事务后,应发出COMMIT命令,以便对所有涉及的表所做的更改都将生效。

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

你可以通过设置名为的会话变量来控制事务的行为AUTOCOMMIT。如果AUTOCOMMIT设置为1(默认值),则每个SQL语句(无论是否在事务中)都被视为完整事务,并在完成时默认情况下提交。

当AUTOCOMMIT设置为0时,通过发出SET AUTOCOMMIT = 0命令,随后的一系列语句就像一个事务,并且在发出显式COMMIT语句之前不会提交任何活动。

你可以使用以下命令在PHP中执行这些SQL命令:mysql_query()功能。

事务的示例

事件的顺序与所使用的编程语言无关。可以使用用于创建应用程序的任何语言来创建逻辑路径。

可以使用以下命令在PHP中执行这些SQL命令:mysql_query()功能。

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

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

  • 检查是否没有错误,一切都根据你的要求;

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

MySQL中的交易安全表类型


你不能直接使用事务,但是可以使用某些例外情况。但是,它们并不安全且不能保证。如果计划在MySQL编程中使用事务,则需要以特殊方式创建表。表的类型很多,它们支持事务,但是最受欢迎的一种是InnoDB.

从源编译MySQL时,对InnoDB表的支持需要特定的编译参数。如果你的MySQL版本不支持InnoDB,请要求你的Internet服务提供商构建一个支持InnoDB表类型的MySQL版本,或者下载并安装该版本的MySQL。MySQL-Max二进制发行版适用于Windows或Linux / UNIX,并在开发环境中使用表类型。

如果你的MySQL安装支持InnoDB表,只需添加一个TYPE = InnoDB表创建语句的定义。

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

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

mysql> use TUTORIALS;
Database changed

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

有关InnoDB的更多详细信息,你可以单击以下链接: InnoDB

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