事务是一组连续的数据库操作操作,就像它是一个单独的工作单元一样.换句话说,除非组内的每个单独操作都成功,否则交易永远不会完成.如果事务中的任何操作失败,整个事务将失败.
实际上,您将许多SQL查询添加到一个组中,并且您将作为事务的一部分一起执行所有这些查询.
交易具有以下四种标准属性,通常用首字母缩略词 ACID &minus表示;
原子性 : 这确保了工作单元内的所有操作都能成功完成;否则,交易在失败时中止,之前的操作将回滚到以前的状态.
一致性 : 这可确保数据库在成功提交的事务中正确更改状态.
隔离 : 这使交易能够独立运作并相互透明.
耐久性 : 这可以确保在系统出现故障时,已提交事务的结果或效果仍然存在.
在MySQL中,事务以声明 BEGIN WORK 并以 COMMIT 或 ROLLBACK 语句结束.开始和结束语句之间的SQL命令构成了事务的大部分.
这两个关键字提交和回滚主要用于MySQL事务.
成功完成交易后,应发出COMMIT命令,以便对所有相关表的更改生效.
如果发生故障,应发出ROLLBACK命令以返回事务中引用的每个表都是先前的状态.
您可以通过设置名为的会话变量来控制事务的行为AUTOCOMMIT 的.如果AUTOCOMMIT设置为1(默认值),则每个SQL语句(在事务内或不在事务中)都被视为完整事务,并在完成时默认提交.
设置AUTOCOMMIT时通过发出 SET AUTOCOMMIT = 0 命令,后续的一系列语句就像一个事务,在发出显式COMMIT语句之前不会提交任何活动.
您可以使用 mysql_query()函数在PHP中执行这些SQL命令.
此事件序列与所使用的编程语言无关.逻辑路径可以用您创建应用程序的任何语言创建.
您可以使用 mysql_query()函数在PHP中执行这些SQL命令.
通过发出SQL命令 BEGIN WORK 来开始事务.
发出一个或多个SQL命令,如SELECT,INSERT,UPDATE或DELETE.
检查是否没有错误并且一切都符合您的要求.
如果有任何错误,则发出ROLLBACK命令,否则发出COMMIT命令.
您不能直接使用事务,但是对于某些例外,您可以.但是,它们并不安全且无法保证.如果您计划在MySQL编程中使用事务,那么您需要以特殊方式创建表.有许多类型的表支持事务,但最常用的是 InnoDB .
对InnoDB表的支持在编译MySQL时需要特定的编译参数来源.如果您的MySQL版本没有InnoDB支持,请让您的Internet服务提供商构建一个支持InnoDB表类型的MySQL版本,或下载并安装适用于Windows或Linux/UNIX的 MySQL-Max Binary Distribution 在开发环境中使用表类型.
如果您的MySQL安装支持InnoDB表,只需在表创建语句中添加 TYPE = InnoDB 定义即可.
例如,以下代码创建一个名为 tcount_tbl :
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 ,但这取决于您的安装,是否支持这两种表类型.