跟着百度学PHP[14]-PDO之Mysql的事务处理1
事务处理:在实际案例当中干一件事的mysql语句(好比转账,小一同学转账100,小二同学收账,在mysql当中小一就要减去转账的钱,小二就要增加100快)倘若该语句执行过程中有任何一条的sql语句出错那么就将该件事情的sql语句全部撤销。这就叫事务处理。
mysql中常用的表类型有两种:
1.mylsam 非事务 特点:增删改速度快
2.InnodB 事务型 特点:安全性高
mysql默认的是mylsanm,所以我们使用mysql的事务处理就需要将默认的改为InnodB类型。
我们先来创建一个innodb类型的表。
mysql> create table demo(
-> id int not null auto_increment primary key,
-> username char(50),
-> yue double)
-> engine=innodb; //将引擎设置为innodb,engine英译为:引擎
Query OK, 0 rows affected (0.20 sec)
此时我插入两条数据:(PS:此时还没有进行开启自动提交,所以数据不会自动提交。)
mysql> insert into demo(id,username,yue) values(1,'zhangsan',100);
Query OK, 1 row affected (0.00 sec) mysql> insert into demo(id,username,yue) values(2,'lisi',120);
Query OK, 1 row affected (0.00 sec)
在mysql默认当中执行sql语句是自动提交的,比如insert into demo(id,username,yue) values(1,"admin",1000);执行了以后就直接自动提交。我们要进行事务处理就需要做以下步骤
1.先将自动提交给关闭
mysql> set autocommit=0; //auto英译为自动,commit英译为提交、推送。0为关闭,1为开启。
Query OK, 0 rows affected (0.00 sec)
2.开启事物处理
mysql> start transaction; //trasaction英译为处理。
Query OK, 0 rows affected (0.00 sec)
如此便OK了。
假设我们现在zhangsan同学用余额转账转了十块钱给李四然后,那么就会执行两条sql语句,一条是将张三同学的余额减掉十元钱,第二个是将李四余额加十元。
mysql> update demo set yue = 90 where username = 'zhangsan';
Query OK, 1 row affected (0.08 sec)
Rows matched: 1 Changed: 1 Warnings: 0
将设此时因为系统错误,李四没有收到张三转账的十元。那么就可以使用rollback进行撤回。
mysql> select * from demo;
+----+----------+------+
| id | username | yue |
+----+----------+------+
| 1 | zhangsan | 100 |
| 2 | lisi | 120 |
+----+----------+------+
2 rows in set (0.00 sec) mysql> update demo set yue = 90 where username = 'zhangsan';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from demo;
+----+----------+------+
| id | username | yue |
+----+----------+------+
| 1 | zhangsan | 90 |
| 2 | lisi | 120 |
+----+----------+------+
2 rows in set (0.00 sec) mysql> rollback;
Query OK, 0 rows affected (0.05 sec) mysql> select * from demo;
+----+----------+------+
| id | username | yue |
+----+----------+------+
| 1 | zhangsan | 100 |
| 2 | lisi | 120 |
+----+----------+------+
2 rows in set (0.00 sec)
在没有使用commit提交之前都是可撤回的。因为数据并没有提交。
如果要提交就用commit命令。即可。

跟着百度学PHP[14]-PDO之Mysql的事务处理1的更多相关文章
- 跟着百度学PHP[14]-PDO之Mysql的事务处理2
前面所将仅仅是在纯mysql下的讲解,这节就是要将其搬到PDO台面上来了. 将自动提交关闭. SetAttribute下有一个PDO::ATTR_AUTOCOMMIT 将其设置为0即可关闭,如:$pd ...
- 跟着百度学PHP[14]-PDO的错误处理模式&PDO执行SQL
我们在使用PDO去执行sql语句的时候并不会报错.如下案例所示: <?php try { //$pdo = new pdo("mysql:host=主机;port=端口;dbname= ...
- 跟着百度学PHP[14]-PDO的预处理语句2
在$sql = $pdo -> prepare("insert into users(gold,user,password) values(?,?,?)"):条语句我们不仅仅 ...
- 跟着百度学PHP[14]-PDO的预处理语句1
预处理语句有以下两个特点: 1.效率高 2.安全性好 为什么说预处理语句效率高呢? 预处理语句就好比一个模板,比如下面的一串插入语句: insert into admin(id,username,pa ...
- 跟着百度学PHP[14]-初识PDO数据库抽象层
目录: 00x1 php中的pdo是什么? 00x2 pdo创建一个PDO对象 00x1 php中的pdo是什么? 就是操作数据库的方法,pdo就是把操作数据库的函数封装成一个pdo类,其间做了安全验 ...
- 跟着百度学PHP[14]-COOKIE的应用/网站登陆案例完整案例
先在数据库当中创建以下数据: mysql> create table user( -> id int not null auto_increment, ) not null default ...
- 跟着百度学PHP[14]-PDO-优化驱动
使用方法设置预定义变量 PDO的方法/属性 PDO::beginTransaction — Initiates a transaction PDO::commit — Commits a transa ...
- 跟着百度学PHP[17]-复习PDO的几个关键词
主要就是复习一下几个关键词.发现太久没有写又忘了.惭愧. final self static const
- 跟着百度学PHP[4]OOP面对对象编程-17-多态
多态是除封装和继承之外的另一个面象对象的三大特性之一. 多态的作用简而言之就是为程序做括展. 比如说在公司上班,每个月财务发放工资,同一个发工资的方法,在公司内不同的员工或是不同职位的员工,都是通过这 ...
随机推荐
- 实现自动文本摘要(python,java)
参考资料:http://www.ruanyifeng.com/blog/2013/03/automatic_summarization.html http://joshbohde.com/blog/d ...
- Java笔记14:泛型初探
一.泛型简介 泛型是从Java SE 1.5开始出现的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口.泛 ...
- MapReduce报错:Error: java.io.IOException: Initialization of all the collectors failed. Error in last collector was :interface javax.xml.soap.Text
这个问题折腾了我一天了,最主要的是真的不懂在哪里看log,所以虽然折腾地很没有道理但还是一直在折腾. 这个问题很好解决,在main函数处错误import了 javax.xml.soap.Text,应该 ...
- 使用ant运行testng的testng.xml并且使用testng-results.xsl美化结果
先看build.xml <?xml version="1.0" encoding="UTF-8"?> <project basedir=&qu ...
- 2013年八月GBin1月刊
2013年八月GBin1月刊 推荐十款来自极客标签的超棒前端特效[第十二期] 本周,我们带来了极客社区推荐的10款前端特效,仍然是非常有趣的小动态效果的页面生成.喜欢的可以直接将我们的在线调试代码插入 ...
- UML类图介绍(转载)
UML类图详细介绍 类图主要描述程序对象以及他们之间的关系.一般来说,类.接口.抽象类这些程序对象的区别很容易,但是他们之间六种关系以前总是理解不够深刻,这次进行了一次复习,顺便写成博文以便加深理 ...
- C 输入一串数字,去掉当中含7的和能被7整除的数
C 输入一串数字,去掉当中含7的和能被7整除的数,每一个数小于10000,数字个数小于100 输入样例:1,7,56,77,87,2,45,42,97,9977 输出:1,2,45 注意:输入个数不确 ...
- mysql,给每一条数据的某一个字段生成不同的随机数
UPDATE t_article ta-- 利用LEFT JOIN的方式进行关联修改 LEFT JOIN(-- 先通过查询的方式给每一条数据生成对应的10-500之间随机数 SELECT articl ...
- js 数组分解 解构
// ES5 a = list[0], rest = list.slice(1) // ES6 [a, ...rest] = list
- linux中的两个很重要的信号:SIGALRM信号和SIGCHID信号
在进行堵塞式系统调用时.为避免进程陷入无限期的等待,能够为这些堵塞式系统调用设置定时器.Linux提供了alarm系统调用和SIGALRM信号实现这个功能. 要使用定时器.首先要安装S ...