两个事务update同一条数据会发生什么?

联合索引ABC,现在有个执行语句是A = XXX and C < XXX,索引怎么走根据最左匹配原则,A可以走联合索引,C不会走联合索引,但是C可以走索引下推

两个事务update同一条数据会发生什么

当事务 A 进行 update 的时候会记录加 X 型行级锁,如果事务 B 执行 update 的时候,发现记录已经加了 X 型行级锁之后,就会进入阻塞状态,因为发生了写写冲突。事务 B 会阻塞到到事务A 提交事务之后,因为事务提交之后锁才会释放。

sql题:给学生表、课程成绩表,求不存在01课程但存在02课程的学生的成绩

可以使用SQL的子查询和LEFT JOIN或者EXISTS关键字来实现,这里我将展示两种不同的方法来完成这个查询。

假设我们有以下两张表:

Student 表,其中包含学生的sid(学生编号)和其他相关信息。

Score 表,其中包含sid(学生编号),cid(课程编号)和score(分数)。

SELECT s.sid, s.sname, sc2.cid, sc2.score
FROM Student s
LEFT JOIN Score AS sc1 ON s.sid = sc1.sid AND sc1.cid = '01'
LEFT JOIN Score AS sc2 ON s.sid = sc2.sid AND sc2.cid = '02'
WHERE sc1.cid IS NULL AND sc2.cid IS NOT NULL;


SELECT s.sid, s.sname, sc.cid, sc.score
FROM Student s
JOIN Score sc ON s.sid = sc.sid AND sc.cid = '02'
WHERE NOT EXISTS (
    SELECT 1 FROM Score sc1 WHERE sc1.sid = s.sid AND sc1.cid = '01'
);

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 19:32:06       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 19:32:06       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 19:32:06       58 阅读
  4. Python语言-面向对象

    2024-07-15 19:32:06       69 阅读

热门阅读

  1. 浏览器渲染流程

    2024-07-15 19:32:06       21 阅读
  2. Redis Cluster 工具

    2024-07-15 19:32:06       15 阅读
  3. leensa注册码

    2024-07-15 19:32:06       26 阅读