0

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

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

我还希望当它锁定table2(或它的行)时,SELECTs 至少能够读取它。

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

这是如何实现的,或者它已经在这样做了?

这是在一个TRIGGER.

提前谢谢了!

4

1 回答 1

1

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

于 2013-01-08T19:17:07.860 回答