Możesz użyć czegoś takiego:
INSERT INTO users (user_id, name)
SELECT 1 + coalesce((SELECT max(user_id) FROM users WHERE name='Bob'), 0), 'Bob';
Ale takie zapytanie może prowadzić do sytuacji wyścigu. Upewnij się, że jesteś w transakcji i blokujesz tabelę użytkowników przed jej uruchomieniem. W przeciwnym razie możesz skończyć z dwoma Bobami o tym samym numerze.