数据库的悲观锁
2022-04-11 本文已影响0人
哈哈11122
悲观锁
悲观锁:修改之前先对数据库里的数据进行锁定,然后修改,修改后释放锁。在锁定中,其他人无法修改数据。
数据库里的悲观锁
表名:SWHS_PROJECT_MEETING
字段 | 是否唯一 | 备注 |
---|---|---|
MEETING_ID | 是 | 主键 |
VERSION_CODE | 否 |
1.行锁
- 通过for update语句加锁
select meeting_id, meeting_status from swhs_project_meeting where meeting_id=181 for update; - 此时meeting_id=181的数据被加了行锁。
故:
update swhs_project_meeting set meeting_status=1 where meeting_id=181会进入等待,直到步骤1的for update语句提交。
更新、删除其他数据和插入数据不受影响。例如:
update swhs_project_meeting set meeting_status=1 where meeting_id=208 ;
insert into swhs_project_meeting(meeting_id, meeting_status) values(201, 0);
2.表锁
- 通过for update语句加锁。meeting_status字段没有唯一性约束。
select meeting_id, meeting_status from swhs_project_meeting where meeting_status =1 for update - 此时是表锁,不可执行插入、更新和删除。