请问SQL里面FOR UPDATE加的锁,什么时候释放呢?

看到很多帖子说到,commit之后会释放锁。
但是这句话感觉很模糊。
拟举一个开发的业务场景
一个顺序号表中, 现在的顺序号是1, 要用到10个,处理完之后,将顺序号改成11。
正常的业务逻辑是。

1、第一步:获取顺序号,进行加锁
select num from a where type = 'oder_num' for update

返回的顺序号是1。
2、第二步:处理业务
处理了10个订单后,顺序号就是11了。
这时候将11回写到表中。

update a set num = 11 where type = 'oder_num'

业务结束!
在这个业务过程中,有以下几个问题。
1、这个过程中有没有释放锁?
2、如果有,在哪一步释放的?
3、如过没有,该如何进行释放?

不同数据库情况会不一样。
根据你的提问,建议你先搜索一下相关资料,了解一下什么是数据库事务;
然后还要看数据库及该会话有没有设置自动commit。

假定你这个过程处于事务中,而且没有自动commit,那么在你执行for update时,就加锁了,而且直到最后你都没有显式的执行"commit;"那么这个锁就没有被释放。
如果没开事务,而且配置了自动commit,那么你第一步的锁马上就被释放了