Vous pouvez utiliser quelque chose comme ceci :
INSERT INTO users (user_id, name)
SELECT 1 + coalesce((SELECT max(user_id) FROM users WHERE name='Bob'), 0), 'Bob';
Mais une telle requête peut conduire à une condition de concurrence. Assurez-vous que vous êtes dans une transaction et que vous verrouillez la table des utilisateurs avant de l'exécuter. Sinon, vous pourriez vous retrouver avec deux Bobs avec le même numéro.