mysql行级锁怎么加
时间 : 2023-03-08 14:36:01声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

MySQL中的行级锁可以通过使用SELECT ... FOR UPDATE和SELECT ... LOCK IN SHARE MODE语句来实现。这些语句用于在事务中锁定一行或多行,以确保在多个事务同时访问同一行时,只有一个事务可以修改该行。

以下是使用行级锁的示例:

1. SELECT ... FOR UPDATE

使用SELECT ... FOR UPDATE语句可以在事务中锁定指定行,并防止其他事务修改该行。以下是示例:

BEGIN;

SELECT * FROM users WHERE id = 1 FOR UPDATE;

UPDATE users SET name = 'New Name' WHERE id = 1;

COMMIT;

在这个例子中,我们选择了ID为1的用户,然后使用FOR UPDATE子句锁定了该行。这意味着只有在当前事务提交之前,其他事务才能访问或修改该行数据。

2. SELECT ... LOCK IN SHARE MODE

使用SELECT ... LOCK IN SHARE MODE语句可以在事务中锁定指定行,但允许其他事务也可以读取该行。以下是示例:

BEGIN;

SELECT * FROM users WHERE id = 1 LOCK IN SHARE MODE;

UPDATE users SET name = 'New Name' WHERE id = 1;

COMMIT;

在这个例子中,我们选择了ID为1的用户,然后使用LOCK IN SHARE MODE子句锁定了该行。这意味着其他事务可以读取该行,但不能修改该行数据。在当前事务提交之前,其他事务不能修改该行。

需要注意的是,行级锁只在使用InnoDB存储引擎时才可用。如果您使用MyISAM存储引擎,则可以使用表级锁,但不能使用行级锁。