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

1 | gjuuffc |1
2 |hcjcc56 |1

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


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