Функция заполнения полей

Семейный

Добрый вечер! Столкнулся с тем, что не могу придумать как реализовать автозаполнение поля в Apex с последующим сохранением. Не подскажите, как должна выглядеть функция, генерирующая уникальное девятизначное числовое значение с сохранением в строке таблицы? Наткнулся на одном форуме вот на такую функцию:
SELECT dbms_random.string(NULL, 0) ||
       substr(to_char(1e7 + trunc(dbms_random.value(0, 999999999))), 2) ||
       dbms_random.string(NULL, 0) 
FROM dual
Она работает, но значения не сохраняет. Там же узнал, что для сохранения можно использовать COALESCE. Никогда с ней не сталкивался, подскажите, как все это соединить? Или как-то иначе можно?
6 ответов

Семейный

что значит не сохраняет значения?


Семейный

Это значит, что каждый раз, используя эту функцию в запросе, она выдает разные значения. Нужно, чтобы первое значение, которое выводится в поле, там сохранялось и больше не изменялось.


Семейный

Вообще-то для сохранения чего-то в БД используются INSERT и UPDATE.


Семейный

Это я понимаю. Не понимаю, как это реализовать. У меня есть таблица, в которой должен быть случайно сгенерированный номер. В Sourse я вставляю выше описанную функцию. Кнопка "Сохранить" DataBase Action "Insert" есть. Когда в следующий раз я открываю эту запись, номер там уже другой. Что я не так делаю?


Семейный

Когда в следующий раз я открываю эту запись, номер там уже другой
быть такого не может
CREATE TABLE test_table(id NUMBER);
 
/
INSERT INTO test_table(id)  VALUES(trunc(dbms_random.VALUE(0, 999999999)));
 
commit;
/
 
SELECT * FROM test_table; -- и сколько раз не смотри, число будет одно и тоже
 
/
DROP TABLE test_table purge;


Семейный

Большое спасибо! Все работает.