设置事务超时时间的问题及Oracle数据库update和锁
写在前面:2020年面试必备的Java后端进阶面试题总结了一份复习指南在Github上,内容详细,图文并茂,有需要学习的朋友可以Star一下! GitHub地址: https://github.com/abel-max/Java-Study-Note/tree/master
Oracle的update语句问题:
update config t set t.value =1 where t.key='DB_ KEY'
或者:
select * from config t where t.key='DB_KEY' for update
这个update会试图为where条件指定的那些数据加上行级锁,但如果此时这些数据已经被其他事务加锁了,则会一直等待,直到锁被释放,然后再去竞争这些数据的锁。
问题是,我不想让它一直等待,如果加不上锁就立即返回失败信息。对于select ... for update语句,可以用如下方式:
select ... for update nowait(加锁失败则立即报错)