Привет
Вы в принципе не можете сделать select вне транзакции. Если вы делаете запрос вне транзакции - этот запрос будет обёрнут в отдельную транзакцию автоматически.
Не представляю зачем в вашем примере мог быть нужен s1 вообще - но да, так брать блокировку возможно.
С уважением, Сергей