使InnoDB只锁定当前正在UPDATEd的行?

时间:2013-01-08 18:50:26

标签: mysql locking sql-update innodb

以此answer中的查询为基础(请注意/假设GROUP_CONCAT现在也保存在用户定义的变量中),InnoDB何时以及table1锁定什么?

我希望它只锁定当前正在更新的table1行,并在下一行开始时释放它。

我还希望在锁定table2(或其“行”时SELECT至少能够读取它。

正在更新的列不是PK,甚至不是索引。

如何实现这一目标,还是已经实现了呢?

这是TRIGGER

非常感谢提前!

1 个答案:

答案 0 :(得分:1)

为整个事务保持锁定(因为操作是原子操作,这意味着所有行都被更新或没有行)并且您无法更改(不更改存储引擎)。但是它不会阻止读取(除非您处于SEIALIZABLE隔离级别),因此将执行SELECT查询,但它们将读取旧值。只有SELECT FOR UPDATE和SELECT ... LOCK IN SHARE MODE将被更新阻止。

相关问题