以此answer中的查询为基础(请注意/假设GROUP_CONCAT
现在也保存在用户定义的变量中),InnoDB何时以及table1
锁定什么?
我希望它只锁定当前正在更新的table1
行,并在下一行开始时释放它。
我还希望在锁定table2
(或其“行”时SELECT
至少能够读取它。
正在更新的列不是PK,甚至不是索引。
如何实现这一目标,还是已经实现了呢?
这是TRIGGER
。
非常感谢提前!
答案 0 :(得分:1)
为整个事务保持锁定(因为操作是原子操作,这意味着所有行都被更新或没有行)并且您无法更改(不更改存储引擎)。但是它不会阻止读取(除非您处于SEIALIZABLE
隔离级别),因此将执行SELECT查询,但它们将读取旧值。只有SELECT FOR UPDATE和SELECT ... LOCK IN SHARE MODE将被更新阻止。