MySQL 事务排它锁实验:修改admin表格结构并验证锁效果
MySQL 事务排它锁实验:修改admin表格结构并验证锁效果
本实验通过创建admin表格,设置id字段为索引,并模拟两个事务操作,验证MySQL事务中排它锁的效果。
1. 创建表格和索引
CREATE TABLE admin (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT
);
CREATE INDEX idx_id ON admin (id);
2. 事务代码
第一个事务:施加排它锁
BEGIN;
SELECT * FROM admin WHERE id = 1 FOR UPDATE;
第二个事务:尝试修改被锁定的记录
UPDATE admin SET name = 'New Name' WHERE id = 1;
3. 运行结果和分析
- 在第一个事务中,使用
FOR UPDATE语句对id=1的记录施加了排它锁。这意味着其他事务无法修改该记录,直到第一个事务提交或回滚。 - 在第二个事务中,尝试修改id=1的记录。由于第一个事务持有排它锁,所以第二个事务无法立即修改该记录。第二个事务需要等待第一个事务提交或回滚后才能继续执行。
- 如果第一个事务提交,则第二个事务可以成功修改id=1的记录。如果第一个事务回滚,则第二个事务无法修改id=1的记录。
4. 结论
综上所述,排它锁可以确保在事务未提交之前,其他事务无法修改被锁定的记录。这对于保证数据一致性和完整性至关重要。
原文地址: https://www.cveoy.top/t/topic/o4lC 著作权归作者所有。请勿转载和采集!