Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

mysql 行锁

作者:天盟丶阎王   发布日期:2025-04-28   浏览:22

-- 创建一个示例表
CREATE TABLE `test_table` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(45) NULL,
  `value` INT NULL,
  PRIMARY KEY (`id`),
  UNIQUE INDEX `name_UNIQUE` (`name` ASC)
);

-- 开启事务1,获取行锁
START TRANSACTION;
SELECT * FROM test_table WHERE id = 1 FOR UPDATE;

-- 此时,如果另一个事务尝试更新或锁定同一行,将会被阻塞,直到事务1提交或回滚
-- 例如,事务2执行以下语句将会被阻塞
START TRANSACTION;
UPDATE test_table SET value = 100 WHERE id = 1;

-- 提交事务1,释放行锁
COMMIT;

-- 如果需要回滚事务,可以使用 ROLLBACK
-- ROLLBACK;

解释说明:

  • 行锁 是 MySQL 中 InnoDB 存储引擎的一种锁机制,用于在多用户并发环境下确保数据的一致性和完整性。
  • 在上面的示例中,我们创建了一个名为 test_table 的表,并插入了一些数据。
  • 使用 SELECT ... FOR UPDATE 语句可以在读取数据的同时加锁,防止其他事务修改这些行,直到当前事务结束。
  • 另一个事务如果尝试修改已经被锁定的行,将会被阻塞,直到第一个事务提交或回滚。
  • 最后,通过 COMMIT 提交事务并释放锁,或者通过 ROLLBACK 回滚事务并释放锁。

上一篇:mysql if exists

下一篇:mysql进入库的命令

大家都在看

mysqlavg函数保留小数

mysql经纬度距离计算

存储过程mysql

mysql with语句

mysql时间加减

brew 启动mysql

unsigned在mysql中是什么意思

mysql 插入更新

python mysql update

mysql 查看权限

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站