当前位置:首页 > MySQL

幻读和不可重复读的区别

canca10年前 (2016-07-22)MySQL660

不可重复读

不可重复读的重点是修改:

同样的条件, 你读取过的数据, 再次读取出来发现值不一样了

例子:

在事务1中,Mary 读取了自己的工资为1000,操作并没有完成
 con1 = getConnection(); 
select salary from employee empId ="Mary";
在事务2中,这时财务人员修改了Mary的工资为2000,并提交了事务.

con2 = getConnection();
update employee set salary = 2000;
con2.commit();

在事务1中,Mary 再次读取自己的工资时,工资变为了2000

//con1
select salary from employee empId ="Mary";


在一个事务中前后两次读取的结果并不致,导致了不可重复读。


幻读

幻读的重点在于新增或者删除

同样的条件, 第1次和第2次读出来的记录数不一样

例子:

目前工资为1000的员工有10人。 
事务1,读取所有工资为1000的员工。

con1 = getConnection();
Select * from employee where salary =1000;

共读取10条记录
这时另一个事务向employee表插入了一条员工记录,工资也为1000

con2 = getConnection();
Insert into employee(empId,salary) values("Lili",1000);
con2.commit();

事务1再次读取所有工资为1000的员工

 //con1 
select * from employee where salary =1000;

共读取到了11条记录,这就产生了幻像读。

扫描二维码推送至手机访问。

版权声明:本文由Ant.Master's Blog发布,如需转载请注明出处。

本文链接:https://iant.work/post/41.html

标签: MySQL
分享给朋友:

“幻读和不可重复读的区别” 的相关文章

mysql 配置命令大全

--auto-rehash       Enable automatic rehashing. One doesn't need to use             …

MySQL备份与恢复语句

mysql备份语句:E:\MySQL Server 5.0\bin>mysqldump -uroot -padmin --default-character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob -x s…

Mysql中触发器的使用

在SQL中,名词触发器指“在数据库中为响应一个特殊表格中的某些事件而自动执行的程序代码。”(Wikipedia)说得简单一些,它是在一个特殊的数据库事件,如INSERT或DELETE发生时,自动激活的一段代码。触发器可方便地用...…

Mysql 删除重复记录

1、 具体实现如下: Table Create Table ------------ -------------------------------------------------------- users_groups CREATE TABLE `users_groups` ( `id`…

mysql存储过程执行动态SQL

不需要使用游标循环来读取,直接select * into @变量就OK了,还可以传递参数来执行。 MySql通用分页存储过程 过程参数 4 p_cloumns varchar(500),p_tables varchar(100),p_where varchar(4000),p_order varc…

sql语句查询经纬度范围

sql语句查询经纬度范围

指定一个经纬度,给定一个范围值(单位:千米),查出在经纬度周围这个范围内的数据。 经度:113.914619 纬度:22.50128 范围:2km longitude为数据表经度字段 latitude为数据表纬度字段 SQL在mysql下测…

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。