5月 092022
使用oracle工具查询并修改数据时,为了简单经常会直接使用select …. for update语句, 但随之而来的问题是,你查询显示就打开了事务,显示的记录即使不修改实际也被锁定了。其实可以使用 select …, rowid from xxx的方式, 使用这种方式,只有当你编辑数据时才打开事务锁定,编辑完成保存提交释放事务
for update:
当语句运行时,事务提前打开,会在对应行(where子句)加上行级锁,无where子句等于全表上锁。若遇到客户端断网、测试人员忘记提交\回滚事务,则会发生锁表。
rowid: 运行后, 事务不会自动打开,并未给数据加上行级锁(通过物理地址去确定某一行数据),但可以编辑数据,提交事务的瞬间完成打开事务上锁、提交、解锁等动作,不易发生锁表
Sorry, the comment form is closed at this time.