powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как бы вы написали такую функцию?
4 сообщений из 29, страница 2 из 2
Как бы вы написали такую функцию?
    #40064106
legg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.
legg
таким же образом можно запоминать предыдущее время с текущим и если оно совпадает - добавлять постфикс-счетчик

Новая папка - копия - копия - копия - копия - копия

кого позвать? )
я опять не понял
...
Рейтинг: 0 / 0
Как бы вы написали такую функцию?
    #40064108
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перефразирую — "совпасть с предыдущим" может не одна запись, а множество.
Как должен выглядеть счетчик?
select nvl(to_number(substr(pk,instr(pk,'-')+1)),0)+1 from t1 where substr(pk,1,instr(pk,'-')-1)=systimestamp ?
Или sequence? Или самодельный sequence из таблицы и хранимой процедуры?
Так может быть не делать костыли, а сразу сделать нормальный счетчик?
...
Рейтинг: 0 / 0
Как бы вы написали такую функцию?
    #40064116
legg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.
Перефразирую — "совпасть с предыдущим" может не одна запись, а множество.
Как должен выглядеть счетчик?
select nvl(to_number(substr(pk,instr(pk,'-')+1)),0)+1 from t1 where substr(pk,1,instr(pk,'-')-1)=systimestamp ?
Или sequence? Или самодельный sequence из таблицы и хранимой процедуры?
Так может быть не делать костыли, а сразу сделать нормальный счетчик?

сиквенс конечно же решает сразу все. я почему то принял как исходное ограничение -сиквенсы не использовать
...
Рейтинг: 0 / 0
Как бы вы написали такую функцию?
    #40064166
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
romaro
Мне нужно генерировать случайную строку и на всякий случай проверять, нет ли уже такого значения в таблице. Реализовал при помощи потенциально бесконечного цикла, но может есть более изящный и безопасный вариант?

В науке и технике это называется псевдо-случайное число.

Если оно реализовано правильно - то проверок на уникальность делать не нужно. Но нужно где-то хранить
предыдущее состояние этого генератора. Один из самых простых генераторов - линейный конгруэентный .
Для его реализации нужны умножение на некий коэффициент и остаток от деления на некое целое число.

Вопрос выбора этих чисел - за кадром. Зависит от того какой период псевдо-случайности тебе нужен.


И есть еще другой подход. Берешь простой шифр. Например DES в режиме ECB. Берешь sequence.
И шифруешь каждое его значение как открытый текст. На выходе будет вполне себе шумящая
последовательность длинных blobs. Длину можно регулировать делая padding исходого текста.
...
Рейтинг: 0 / 0
4 сообщений из 29, страница 2 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как бы вы написали такую функцию?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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