Гость
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Уникальны поля в таблице / 3 сообщений из 3, страница 1 из 1
17.05.2021, 21:16
    #40070932
polygraph
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Уникальны поля в таблице
Здравствуйте, помогите , пожалуйста составить хранимую процедуру в MySQL.
Есть таблица
В ней
Id(PK)
Ключ (varchar)
Id games (FK)
Необходимо составить хранимую процедуру, которая будет в поле ключ генерировать случайный не повторяющий ключ из символов и цифр , длинной 8 символов, отличных от тех, которые уже имеются в этой таблице в поле ключ
Т.е.

1 | gjuuffc |1
2 |hcjcc56 |1

Если сгенерированная опять ключ hcjcc56, то нельзя его добавить, и сгенерировать новый
...
Рейтинг: 0 / 0
17.05.2021, 21:46
    #40070933
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Уникальны поля в таблице
Функция генерации:

Код: sql
1.
2.
3.
4.
5.
6.
CREATE FUNCTION generate_password (p_alphabet VARCHAR(255), p_length INT)
RETURNS VARCHAR(255)
RETURN (WITH RECURSIVE
        cte AS ( SELECT 1 n UNION ALL SELECT n + 1 FROM cte WHERE n < p_length)
        SELECT GROUP_CONCAT(SUBSTRING(p_alphabet FROM CEIL(RAND() * LENGTH(p_alphabet)) FOR 1) SEPARATOR '')
        FROM cte);



Функция генерации с проверкой:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE FUNCTION generate_and_check()
RETURNS CHAR(8)
BEGIN
    DECLARE unique_key CHAR(8);
    REPEAT
        SET unique_key := generate_password('qwertyuiopasdfghjklzxcvbnm0123456879', 8);
    UNTIL !COALESCE(( SELECT COUNT(*) FROM mytable WHERE key_column = unique_key ), 0)
    END REPEAT;
    RETURN unique_key;
END



fiddle
...
Рейтинг: 0 / 0
18.05.2021, 22:33
    #40071173
polygraph
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Уникальны поля в таблице
Спасибо большое
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Уникальны поля в таблице / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]