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在这种情况下无用。