SELECT a.*,rowid FROM test a;
SELECT * FROM test a FOR UPDATE;
- 1
- 2
for update 语句运行时,
会在对应行(where 条件)加上行级锁,如果没有where条件,会对全表进行加锁 ,当其他人忘记提交或者回滚事务的时候,就会发生锁表,只适合单人进行操作,不适合多人同时操作;
rowid 运行的时候,
并没有给数据加上行级锁,可以对数据进行编辑,提交的瞬间完成上锁,提交,解锁等动作。所以,当多人对表进行操作的时候,并不会产生无法操作的现象。
for update 和 rowid 的区别
SELECT a.*,rowid FROM test a;
SELECT * FROM test a FOR UPDATE;
for update 语句运行时,会在对应行(where 条件)加上行级锁,如果没有where条件,会对全表进行加锁 ,当其他人忘记提交或者回滚事务的时候,就会发生锁表,只适合单人进行操作,不适合多人同时操作;
rowid 运行的时候,并没有给数据加上行级锁,可以对数据进行编辑,提交的瞬间完成上锁,提交,解锁等动作。所以,当多人对表进行操作的时候,并不会产生无法操作的现象。