在MySQL中使用行级锁for update时,会对指定数据行加锁,其他事务无法再对该行加锁,必须等待当前事务释放锁后才能进行加锁操作。在此期间,数据仅允许当前事务修改,其他事务只能读取,不能修改,确保了数据操作的独占性与一致性。
1、 进入MySQL,于test库中创建新表。
2、 向表中添加若干数据。
3、 2019年1月28日11时15分52秒,有一笔收费记录被录入系统。编号为1的项目显示,购入银翘解毒丸10盒,每盒单价2元,总金额为20元。该数据已存入收费信息表中,包含时间、项目名称、价格、数量及合计金额等详细内容,完整记录了此次交易的具体情况,便于后续查询与管理。
4、 向收费表中插入一条记录,包含以下信息:编号为2,时间为2019年1月28日11时15分59秒,项目名称为甘草片,单价15元,数量2盒,总金额30元。该操作将上述数据写入系统数据库的收费明细中,用于记录此次药品收费情况,确保财务数据准确完整,便于后续查询与统计分析,是日常收费管理中的常规操作之一。
5、 向收费表中插入一条记录,包含以下信息:编号为3,时间为2019年1月28日11时16分04秒,项目名称为阿莫西林,单价为20元,数量为2件,金额总计40元。该操作将上述数据完整写入系统数据库的收费数据表中,用于记录此次收费详情,确保信息准确无误并可供后续查询与统计使用。
6、 向收费表中插入一条记录,包含以下信息:编号为4,时间为2019年1月28日11时16分08秒,项目名称为午时茶,单价为8元,数量为1,金额为8元。该操作将上述各项数据完整写入对应字段,确保信息准确无误地存储至数据库中,便于后续查询与统计使用。
7、 2019年1月28日11时16分12秒,编号为5的收费记录被录入系统,所购药品为银翘解毒丸,单价2元,数量10盒,总金额共计20元。该条信息已完整写入收费数据表中,包含项目名称、发生时间、价格、数量及费用总额等关键字段,确保财务数据准确无误,便于后续查询与统计分析,整个流程符合标准操作规范。
8、 在MySQL中创建abc_1和abc_2两个用户,并分别登录数据库。
9、 用户abc_1对编号为2的数据添加了行级锁。
10、 abc_1用户将id为2的数据的jiage修改为20。
11、 abc_1用户未提交任务,结果仅自己可见。
12、 用户abc_2查询id为2的数据,因abc_1未提交,故价格未更新。
13、 abc_2用户尝试为id=2的数据添加行锁未果,因超时导致失败,此时abc_1用户仍未释放锁。
14、 abc_1用户提交任务,将id为2的数据价格改为20,并解锁该数据。
15、 用户abc_2查询编号为2的记录并加锁,成功获取锁后,读取到用户abc_1更新后的价格数据为20。
