select for update

select ..for update用于锁定特定行。

默认情况下,执行select*from t_szj where id=1 for update和不加update效果一样,原因是:因为默认情况下InnoDB是自动提交的。所以,执行了select..for update后隐式执行了commit。被锁定的行已经解锁,所以在其他事务中执行更新该行的操作能够成功。

如果想要看一下for update的效果,可以关闭自动提交。

mysql> set autocommit=0;
Query OK, 0 rows affected (0.00 sec)
mysql>

另一个客户端连接

一般for update用在事务中,但是InnoDB默认的事务隔离级别是可重复读,已经实现了事务隔离,for update在这种情况下无用。

 

posted @ 2022-12-07 07:42  zhenjingcool  阅读(112)  评论(0编辑  收藏  举报