2016-09-01 2 views
0

Я использую Oracle APEX для создания интерактивного отчета. На странице создания я хочу инертное поле, называемое create_time в базе данных, которое не отображается на странице создания. Аналогично, на странице редактирования я хочу обновить поле под названием update_time в базе данных.Не удалось создать время создания в отчете APEX

Для редактирования страницы, я добавил процесс и установить код PLSQL на:

update table_test t set t.UPDATE_DATE = sysdate 
     where t.ROWID = :P2_ROWID; 

И это работает.

Однако, когда дело доходит до страницы создания, я поставил код PLSQL на:

update table_test t set t.CREATE_DATE = sysdate 
     where t.PROJECT_ID= :P3_PROJECT_ID; 

Это не сработало. Затем я жестко закодировал предложение where так: вот где t.PROJECT_ID = '100', и я создаю проект с id = 100, и он работает! Поэтому я полагаю, почему-то это: P3_PROJECT_ID не удалось получить значение. Кто-нибудь знает почему? И есть ли другие способы вставить create_time, кроме использования процесса? Благодаря!

ответ

1

Причина в том, что APEX не знает значения: P3_PROJECT_ID, если только ваш процесс не использует идентификатор в качестве PK и возвращает значение PK.

Для упрощения создания столбцов «Создать/обновить» создайте триггер базы данных в таблице, которая запускается всякий раз, когда запись вставлена ​​/ обновлена, в том числе из SQL Workshop или вне APEX. Установите один из примеров приложений и посмотрите на триггеры таблиц для лучших практик.

Смежные вопросы