Você pode usar algo assim:
INSERT INTO users (user_id, name)
SELECT 1 + coalesce((SELECT max(user_id) FROM users WHERE name='Bob'), 0), 'Bob';
Mas essa consulta pode levar a uma condição de corrida. Verifique se você está em uma transação e bloqueou a tabela de usuários antes de executá-la. Caso contrário, você pode acabar com dois Bobs com o mesmo número.