栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

在企业级开发过程中我发现有位同事用select * from where 条件 for update

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在企业级开发过程中我发现有位同事用select * from where 条件 for update

活动地址:毕业季·进击的技术er

职场 内卷人

在企业级开发过程中我发现有位同事用select * from where 条件 for update

好吧! 今天我就学习了一手 顺便发个帖子。嘿嘿

本人借鉴的文章

菜鸟教程-MySQL 事务

面试官问:select…for update会锁表还是锁行?

开始巴!嘿嘿

看一段sql,感觉一下是不是很懵逼 可能也会有大佬

BEGIN;
SELECT * FROM a WHERe `key`=1 FOR UPDATe;
UPDATE a SET `name`='songxy9991' WHERe `key` =1;
COMMIT;

SELECT @@autocommit;
SET @@autocommit =0;

SELECT * FROM a WHERe `key`=1 FOR UPDATe;
COMMIT;
UPDATE a SET `name`='songxy12' WHERe `key` =1;
我们一个一个的说明
  • 讲到这里 我们就会说到 事务这个 神圣而又伟大。要么成功要么都不成功。原则性、一致性、隔离性、持久性。等等巴,还有事务的隔离级别,还有spring 中的事务的传播特性 都是面试常考点
BEGIN

就是开启事务

COMMIT;

提交事务

SELECT @@autocommit;

查看事务是否静止自动提交事务

autocommit 状态值说明
  • AUTOCOMMIT=0 禁止自动提交
  • AUTOCOMMIT=1 开启自动提交
    修改状态:
  • SET AUTOCOMMIT=0 禁止自动提交
  • SET AUTOCOMMIT=1 开启自动提交
    MySQL数据库默认会是 自动开启事务的

这边我们就 不让他自动提交事务 给他先禁止掉
SET @@autocommit =0;
SELECT @@autocommit;

真功夫开始了 哈
  • 建表语句
DROP TABLE IF EXISTS `a`;
CREATE TABLE `a`  (
  `key` int(0) NOT NULL AUTO_INCREMENT,
  `value` char(225) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  PRIMARY KEY (`key`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of a
-- ----------------------------
INSERT INTO `a` VALUES (1, 'ssss', 'songxy12');
INSERT INTO `a` VALUES (2, 'yy', 'songxy');
INSERT INTO `a` VALUES (3, 'sxy', 'songxy');
INSERT INTO `a` VALUES (4, '1111', 'songxy');
INSERT INTO `a` VALUES (5, 'qqq', 'songxy');

SET FOREIGN_KEY_CHECKS = 1;

先看一下我之前表数据

先通过主键查
SELECT * FROM a WHERe `key`=1 FOR UPDATE;
执行这个sql  我可没有 COMMIT;哈

在执行
UPDATE a SET `name`='songxy999' WHERe `key` =1;
去查表数据

  • 没有发生改变
执行提交事务的语句
COMMIT;

  • 到底锁的行还是 表 我来试试

  • 报错了;error

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OPLNv5n5-1655994728162)(https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4af5d417b96646b0a4a1430460b7d594~tplv-k3u1fbpfcp-watermark.image?)]

看图

由此可见是锁行

活动地址:毕业季·进击的技术er

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/993550.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号