Короткий ответ на ваш вопрос - нет, это не безопасно. Может пройти какой-то другой сеанс и обновить prep_tag между вашим SELECT и вашими операторами UPDATE.
Длинный ответ заключается в том, что вы делаете это неправильно. Похоже, вы хотите обновить заблокированное поле для этих записей. Вы могли бы просто сделать:
UPDATE prep_tag SET locked = 'Yes'
WHERE project = 'a'
AND categoryId = 'b'
AND locked = 'No'
Одно утверждение, и оно гарантированно будет атомарным.
Кроме того, я бы предложил не совершать коммиты в вашем блоке, предполагая, что есть еще что-то для этой транзакции.