码迷,mamicode.com
首页 > 编程语言 > 详细

时间:2017-08-29 15:37:44      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:Java

数据库自动带锁,insert,update,delete(排他锁) 注意,这个表格的引擎需要为Innodb的 在mysql中做事物的实验,记住要设置为手动式提交事物 Set autocommit=0;

image

排他锁,在select语句最后就加上for update Select * from student where uid=1 for update 共享锁,在语句最后加上lock in share mode Select * from user where uid=1 lock in share mode

共享锁可以向一条记录加入多个共享锁,但是要转成排他锁的话,需要等待其他的共享锁松开,后面继续续又其他事物排他锁加入,mysql会自动拒绝

实验操作

两个访问分别都设置为了手动事物,一个事物操作插入数据,然后另一个查询,会发现插入的数据没有出现在数据库中。

image

当我们提交后,添加的数据才显示在数据库中。

image

当我们回滚后,前面添加的SQL语句则无效

image

人为加排他锁,别人只能查询数据而不能修改数据,如果加锁对象还未提交或回滚,修改数据将会超时。

image

只有等加锁对象提交或者回滚,别的对象才能对数据进行修改;

image

但是因为我们给select添加的是行级排他锁,所以别人不可以修改我们所添加锁的行,但是没有加锁的行,别人是可以修改的。

image

死锁的样式

image

利用事物和锁,做一个购票系统

image

image

image

image

标签:Java

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
凯哥学堂
加入时间:2016-10-07
  关注此人  发短消息
java学习视频下载:www.kaige123.com
凯哥学堂”关注的人------(0
凯哥学堂”的粉丝们------(1
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!