是否有一种方法可以锁定记录,以便在进行查询时无法读取记录?就像用户B首先进行SELECT * FROM users WHERE looking=true查询(这将返回用户A)一样,我希望同一个查询不为用户C返回任何内容。我在看这个:,但是行级锁看起来不适合阅读吗?
除了表级锁之外,还有行级锁,它们可以是独占锁或共享锁。当行被更新或删除时,将自动
FOR UPDATE查询,但是没有返回任何行,那么仍然会创建一个行级锁。例如,如果执行下面的查询,则不会返回任何记录,因为表中没有值为‘xxx’的object_key。select * from payment_detail where object_key = 'xxx' for update;
但是,在执行查询之后,通过查询表v$locked_object确认,在表PAYMENT_DETAIL中创建了一个行
我们有一个高性能的Django web应用程序,它使用MySQL的InnoDB的行级锁定。在我们的代码中,我们看到(在进程A中),如果使用SELECT … FOR UPDATE,表中的特定行是可用的。A将捕捉到这一点,然后继续尝试另一行(使用类似的SELECT … FOR UPDATE方法)。
但是,我不能100%确定当锁等待超时发生时会发生什么。在B完成并释放它的锁之后,即使A的“select…for update”查询超时了,而A又继续锁定另一<e
我已经阅读并测试了MySQL的InnoDB中的行级锁,但我仍然很难说“我知道锁在MySQL中是如何工作的”!在行级锁方面的行为,我打开了两个终端并连接到MySQL。我要给他们取名为mysql1>和mysql2>。> SELECT * FROM lockable WHERE c1 = "B" FOR UPDATE;
令我惊讶的是,上面的查询将被第一个查询<