MySQL什么是事务处理 ?(代码示例)


本文摘自PHP中文网,作者青灯夜游,侵删。

本篇文章给大家带来的内容是介绍MySQL什么是事务处理 ?(代码示例)。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。

MySQL的事务处理

步骤:

1.开启事务 start transaction

当我们开启一个事务的时候,我们对sql的操作都发生在内存中,但是没有真正的反馈到数据库磁盘的文件中!

2.回滚 rollback

回滚,就是恢复到事务开启之前的最原始的状态!

注意:回滚操作会自动的关闭一个事务,如果想再次执行事务,需要重新开启事务!

3.提交 commit

事务的基本原理

普通的执行,之所以是立即执行并生效,因为默认的,MySQL对sql语句的执行是自动提交的!所以,开启一个事务的本质,就是关闭了以前的自动提交的功能,而是由用户手动提交(利用commit语句)!【相关视频教程推荐:MySQL教程】

总结事务的步骤:

1, 开启事务

2, 如果执行成功,就提交commit

3, 如果有任何一条sql语句执行失败,则回滚rollback!

事务处理的示例:

事务处理最典型的就是借还钱,下面以张三向李四还1000元为例:

首先查看数据库中各自的钱数

下面是处理还钱事务的代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

<?php

 

/**

* MySQL实现事务操作

*/

 

echo "<meta charset=utf-8>";

 

// 1 连接数据库

$link = @mysql_connect('localhost','root','') or die('连接数据库失败');

mysql_select_db('test',$link);

mysql_query('set names utf8');

 

// 2  开启事务

mysql_query("start transaction");

//设置一个变量,用来判断所有sql语句是否成功

$flag = true;

 

// 2.1执行事务中的一组sql语句

    

// 李四的money+1000

$sql = "update pdo set mone=money+1000 where name='李四'";

$res = mysql_query($sql);

if (!$res) {

    //若sql语句执行失败,把$falg设置为false

    $flag = false;

}

 

//张三的money-1000

$sql = "update pdo set money=money-1000 where name='张三'";

$res = mysql_query($sql);

if (!$res) {

    //若sql语句执行失败,把$falg设置为false

    $flag = false;

}

 

// 2.2 判断事务是否执行成功

if ($flag) {

    //所有sql语句执行成功,把sql语句提交

    mysql_query('commit');

    echo "还钱成功!";

}else{

    // 如其中一条执行失败,则回滚到事务开启之前的状态

    mysql_query('rollback');

    echo "还钱失败!";

}

结果:

下面,我们故意把其中一个字段写错,看看事务是否正常处理,数据库中的钱数是否有变化!

1

2

// 李四的money+1000

$sql = "update pdo set mone=money+1000 where name='李四'"//把moeny字段错写成mone

结果:

1.jpg

结果是还钱失败,并且数据库中各自的钱数没有变化,说明当某一条语句未执行成功时,事物不会提交,而会回滚,把数据恢复到开始事务之前的原始状态,这也是使用事务的作用,即只有当事务中所有sql语句全部执行成功,事务才会提交,否则会回滚!

总结:以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。

以上就是MySQL什么是事务处理 ?(代码示例)的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

mysql实现慢查询日志相关配置与使用的实例

详解mysql函数拼接查询concat函数的使用方法

教你如何查看mysql配置文件路径及相关配置

mysql介绍一下其他函数

mysql日期格式有哪些?

mysql线程处于opening tables的问题解决(附示例)

mysql联合查询实例分享

如何修改mysql 配置文件数据的存储路径

mysql的case方法使用好处是什么

mysql怎样改变某一列的数据类型

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...