Возможное решение.
- Создать таблицу для регистрации пользователей. Определите столбец имени пользователя как уникальный.
- Вставьте в него максимальное количество записей в соответствии с типом данных (например, 0-255).
- Когда пользователь входит в систему и должен зарегистрироваться, вы используете
UPDATE table
SET name = 'Current user name'
WHERE name IS NULL
ORDER BY id
LIMIT 1;
SELECT id
FROM table
WHERE name = 'Current user name';
Это гарантия того, что пользователь получит наименьший доступный номер и проблем с помехами / совпадениями не возникнет.
Когда пользователь выходит из системы, вы используете
UPDATE table
SET name = NULL
WHERE name = 'Current user name'
id
теперь свободен для повторного использования следующим пользователем, вошедшим в систему.
При возникновении некоторых проблем клиентская сторона и пользователь не вышли из системы, тогда его имя останется зарегистрированным. Но когда он войдет в систему в следующий раз, он получит тот же id
- ОБНОВЛЕНИЕ не удастся, но SELECT вернет несвободное id
.
Тем не менее, вы должны периодически очищать такие старые записи.