讲解MySQL中的事务特性

作者:goldensun 时间:2024-01-25 19:37:13 

一个事务是一个连续的一组数据库操作,就好像它是一个单一的工作单元进行。换言之,永远不会是完整的事务,除非该组内的每个单独的操作是成功的。如果在事务的任何操作失败,则整个事务将失败。

实际上,会俱乐部许多SQL查询到一个组中,将执行所有的人都一起作为事务的一部分。
事务的特性:

事务有以下四个标准属性的缩写ACID,通常被称为:

  •     原子性: 确保工作单元内的所有操作都成功完成,否则事务将被中止在故障点,和以前的操作将回滚到以前的状态。

  •     一致性: 确保数据库正确地改变状态后,成功提交的事务。

  •     隔离性: 使事务操作彼此独立的和透明的。

  •     持久性: 确保提交的事务的结果或效果的系统出现故障的情况下仍然存在。

  • 在MySQL中,事务开始使用COMMIT或ROLLBACK语句开始工作和结束。开始和结束语句的SQL命令之间形成了大量的事务。

  • COMMIT & ROLLBACK:

  • 这两个关键字提交和回滚主要用于MySQL的事务。

  •     当一个成功的事务完成后,发出COMMIT命令应使所有参与表的更改才会生效。

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

可以控制的事务行为称为AUTOCOMMIT设置会话变量。如果AUTOCOMMIT设置为1(默认值),然后每一个SQL语句(在事务与否)被认为是一个完整的事务,并承诺在默认情况下,当它完成。 AUTOCOMMIT设置为0时,发出SET AUTOCOMMIT =0命令,在随后的一系列语句的作用就像一个事务,直到一个明确的COMMIT语句时,没有活动的提交。

可以通过使用mysql_query()函数在PHP中执行这些SQL命令。
通用事务例子

这一系列事件是独立于所使用的编程语言,可以建立在任何使用的语言来创建应用程序的逻辑路径。
可以通过使用mysql_query()函数在PHP中执行这些SQL命令。

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

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

  •     检查是否有任何错误,一切都依据的需要。

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

在MySQL中的事务安全表类型:

如果打算使用MySQL事务编程,那么就需要一种特殊的方式创建表。有很多支持事务但最流行的是InnoDB表类型。

从源代码编译MySQL时,InnoDB表支持需要特定的编译参数。如果MySQL版本没有InnoDB支持,请互联网服务提供商建立一个版本的MySQL支持InnoDB表类型,或者下载并安装Windows或Linux/UNIX的MySQL-Max二进制分发和使用的表类型在开发环境中。
如果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
 -> (
 -> tutorial_author varchar(40) NOT NULL,
 -> tutorial_count INT
 -> ) TYPE=InnoDB;
Query OK, 0 rows affected (0.05 sec)

请查看下面的链接了解更多关于: InnoDB

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

标签:MySQL,事务
0
投稿

猜你喜欢

  • 带你了解python装饰器

    2023-08-26 23:10:57
  • python3实现域名查询和whois查询功能

    2023-09-19 19:35:12
  • MySQL中or、in、union与索引优化详析

    2024-01-18 08:21:55
  • Mysql双主搭建的方法步骤

    2024-01-29 05:57:50
  • 浅谈Python中用datetime包进行对时间的一些操作

    2022-09-27 09:32:14
  • Python变量作用域LEGB用法解析

    2022-12-05 19:18:22
  • javascrip关于继承的小例子

    2024-04-22 22:17:49
  • python定时任务schedule库用法详细讲解

    2022-11-01 10:19:29
  • Windows下通过DOS命令登录MYSQL的方法

    2024-01-27 13:21:02
  • python 密码验证(滑块验证)

    2021-01-24 02:32:18
  • MySQL数据库卸载的完整步骤

    2024-01-13 13:12:52
  • pytorch中tensor的合并与截取方法

    2022-02-11 14:16:58
  • 程序员开发项目是选择效率还是质量呢?

    2023-09-17 08:37:03
  • 重新认识视觉设计

    2009-09-08 12:46:00
  • Python编程使用Selenium模拟淘宝登录实现过程

    2023-08-29 00:56:53
  • 教你怎么用Python监控愉客行车程

    2021-10-22 17:59:37
  • Python的Flask框架中Flask-Admin库的简单入门指引

    2021-11-06 03:30:19
  • js实现照片墙功能实例

    2024-04-19 11:03:30
  • 基于python实现判断字符串是否数字算法

    2022-10-15 00:46:58
  • 带有定位当前位置的百度地图前端web api实例代码

    2024-05-08 10:11:56
  • asp之家 网络编程 m.aspxhome.com