首页 > 试题广场 >

在MySQL中,关于SELECT...FOR UPDATE和

[单选题]
在MySQL中,关于SELECT...FOR UPDATE和SELECT...FOR SHARE(LOCK IN SHARE MODE)的区别:
事务A:SELECT * FROM accounts WHERE id = 1 FOR SHARE;
事务B:SELECT * FROM accounts WHERE id = 1 FOR SHARE;
事务A:UPDATE accounts SET balance = balance + 100 WHERE id = 1;
会发生什么?
  • 事务A的UPDATE正常执行
  • 事务A的UPDATE被阻塞,因为事务B持有共享锁
  • 可能发生死锁,如果事务B也尝试UPDATE
  • B和C都正确

这道题你会答吗?花几分钟告诉大家答案吧!