#postgresql #stored-procedures
#postgresql #хранимые процедуры
Вопрос:
Мне нужно сгенерировать уникальный идентификатор на основе другого значения столбца для каждой записи, вставляемой в таблицу.
Допустим, у меня есть таблица EG_TAB (идентификатор, СТРОКА). Идентификатор должен быть сгенерирован на основе СТРОКИ, а также должен удовлетворять приведенным ниже условиям
- должно быть уникальным (его уже не должно быть в таблице)
- должно быть сгенерировано из входной СТРОКИ.
- длина должна составлять 8 символов.
- Если СТРОКА состоит из одного слова, то возьмите первые четыре символа и добавьте случайные числа в конец.
- Если СТРОКА содержит несколько слов, то возьмите первый символ из каждого слова, затем заполните остальные символы случайными числами.
Возможно ли это в функциях PostgreSQL?
Комментарии:
1. Почему бы просто не использовать последовательность для
ID
? Или, если это должно быть что-то «случайное», используйтеuuid
2. @a_horse_with_no_name Я не могу использовать sequence или UUID, поскольку идентификатор будет предоставлен пользователям. Чтобы упростить запоминание, идентификатор генерируется на основе пользовательского ввода.
3. Что легче запомнить, чем число?
4. идентификатор @a_horse_with_no_name должен иметь длину 8 символов :-). Будет сложно запомнить число из 8 цифр.
5.
create sequence tab_id_seq start with 10000000 maxvalue 99999999