一、现象描述
在开发中有时需要测试程序中某个查询语句超时的现象,要想出现该效果必须把该条查询语句对应的行记录锁住,是的程序无法查询,这样程序才会出现超时的现象。
二、解决方法
步骤:
1、首先使用PL/SQL、Navicat或其他客户端锁定数据库中某个表的待查询记录记录并,只需要在查询语句后加 for update 即可
select * from CARD_USER_INFO where card_id = '123456789' for update;2、修改程序中的查询语句,在查询语句的后加 for update,一下以Mybatis为例
<select id="selectCardUserInfoById" resultMap="cardUserInfoResult" timeout="2000">
select *
from CARD_USER_INFO
where
CARD_ID = #{cardId} for update
</select>这样当程序执行到这里时就会等待,直到超过2秒后超时,取消查询操作请求,这样就会模拟出现查询超时的现象了。
注:使用for update锁定记录时,只对该记录的修改和删除有影响,不会影响查询操作,除非在查询语句后加上 for update。
516

被折叠的 条评论
为什么被折叠?



