数据库的悲观锁

悲观锁

悲观锁:修改之前先对数据库里的数据进行锁定,然后修改,修改后释放锁。在锁定中,其他人无法修改数据。

数据库里的悲观锁

表名:SWHS_PROJECT_MEETING

字段 是否唯一 备注
MEETING_ID 主键
VERSION_CODE

1.行锁

  1. 通过for update语句加锁
    select meeting_id, meeting_status from swhs_project_meeting where meeting_id=181 for update;
  2. 此时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.表锁

  1. 通过for update语句加锁。meeting_status字段没有唯一性约束。
    select meeting_id, meeting_status from swhs_project_meeting where meeting_status =1 for update
  2. 此时是表锁,不可执行插入、更新和删除。

你可能感兴趣的:(数据库的悲观锁)