powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Помощь новичку (insert)
4 сообщений из 4, страница 1 из 1
Помощь новичку (insert)
    #36571495
scor4er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Через Oracle Forms требуется занести в таблицу строчку. На формочке три текстовых поля и кнопка. В триггер WHEN-BUTTON-PRESSED ввожу следующее(специально только insert и больше ничего):
--------------------------------------------------------
BEGIN
insert into TABLE1 ("COL1", "COL2", "COL3")
values (:TEXT_COL1, :TEXT_COL1, :TEXT_COL1);
commit;
END;
--------------------------------------------------------
TABLE1 - вида: (ID, COL1, COL2, COL3)

Для ввода ID использую триггер (уже в SQL Developer):
-------------------------------------------------------------------------------
create or replace TRIGGER "NEW_T1_R" BEFORE INSERT ON TABLE1 FOR EACH ROW
BEGIN
SELECT SEQ_TABLE1.NEXTVAL INTO :new.ID FROM DUAL;
END;
--------------------------------------------------------------------------------

Запускаю форму, жму на кнопку - в таблицу добавляются сразу две записи, а не одна. Откуда! не могу разобраться, нужна помощь. С Forms вожусь только второй день, так что заранее извиняюсь за возможную глупость вопроса =)
...
Рейтинг: 0 / 0
Помощь новичку (insert)
    #36571510
scor4er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
P.S. Использую Oracle Forms 6i.
...
Рейтинг: 0 / 0
Помощь новичку (insert)
    #36571671
va_kochnev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scor4er,
Скорее всего блок формы, в котором определены эти текстовые поля, базируется на таблице table1.
Поэтому при выполнении commit в триггере выполняется сохранение введенной записи штатными средствами forms-а. Плюс явный insert в триггере. Вот записи и двоятся.
Варианты лечения:
1. В триггере оставить только commit; (в этом случае будет срабатывать штатная процедура вставки записи в таблицу)
2. На блоке формы создать триггер ON-INSERT, в котором прописать единственную команду null; (в этом случае штатная процедура работать не будет, а будет выполнятся вставка явной командой insert в триггере WHEN-BUTTON-PRESSED)
3. Гибридный вариант - перенести команду insert из WHEN-BUTTON-PRESSED в ON-INSERT.
...
Рейтинг: 0 / 0
Помощь новичку (insert)
    #36571756
scor4er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо! Перенёс insert в pre-insert триггер - теперь все работает отлично)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Помощь новичку (insert)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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