mysql行级锁 代码示例
时间: 2023-10-13 08:28:51 浏览: 205
行级锁的实例
MySQL中的行级锁可以通过使用SELECT ... FOR UPDATE和SELECT ... LOCK IN SHARE MODE语句来实现。这两个语句都可以锁定查询结果中的行,以防止其他事务修改该行数据。
下面是一个示例代码,演示如何使用SELECT ... FOR UPDATE语句锁定行:
```
-- 建立测试表
CREATE TABLE test_table (
id INT PRIMARY KEY,
value VARCHAR(10)
);
-- 插入测试数据
INSERT INTO test_table (id, value) VALUES (1, 'foo'), (2, 'bar');
-- 执行事务,锁定id=1的行
START TRANSACTION;
SELECT * FROM test_table WHERE id=1 FOR UPDATE;
-- 在此期间,其他事务无法修改id=1的行
COMMIT;
```
在上面的示例中,我们首先创建了一个名为test_table的测试表,并插入了两行数据。接下来,我们启动一个事务,并使用SELECT ... FOR UPDATE语句查询id=1的行。该语句将锁定查询结果中的id=1的行,以防止其他事务修改该行数据。在事务提交之前,其他事务无法修改id=1的行。
注意,使用SELECT ... FOR UPDATE语句只会锁定查询结果中的行,并不会锁定整个表。如果您需要锁定整个表,请使用LOCK TABLES语句。此外,使用行级锁可能会导致死锁问题,需要谨慎使用。
阅读全文