-- 创建一个示例表
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;
test_table
的表,并插入了一些数据。SELECT ... FOR UPDATE
语句可以在读取数据的同时加锁,防止其他事务修改这些行,直到当前事务结束。COMMIT
提交事务并释放锁,或者通过 ROLLBACK
回滚事务并释放锁。上一篇:mysql if exists
下一篇:mysql进入库的命令
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站