Проверка ссылочной целостности перед удалением в APEX 20.1

Когда пользователь пытается удалить запись кода / проверки, я хотел бы проверить, использовался ли код в этой записи до попытки удаления, чтобы я мог отобразить сообщение, которое более значимо, чем ошибка ограничения Oracle.

Например: «Этот код нельзя удалить, потому что на него есть ссылка в записи курса. Вместо этого отключите его».

Может ли кто-нибудь дать мне общий совет по поводу подхода?

Моей первой мыслью было создать динамическое действие, связанное с кнопкой «Удалить». Однако я думаю, что есть способ получше.

2 ответа

Вы сказали - создайте валидацию , они предназначены для этой цели. Сделайте его телом функции, возвращающим текст ошибки . Напишите свой фрагмент кода и отобразите сообщение. Что-то вроде

      declare
  l_var number;
begin
  select d.blabla
    into l_var
    from detail_table d
    where ...;

  if l_var is not null then
     return ('This code can not be deleted etc.');
  end if;
end;

Я предпочитаю перехват ошибок, если они происходят, с использованием обработчика ошибок приложения https://docs.oracle.com/en/database/oracle/application-express/20.2/htmdb/editing-application-attributes.html#GUID-B744BE26-69B6-4084-A217-114CF05A5A4B

В этом примере подробно рассказывается, как преобразовать любые известные ограничения в более удобное сообщение.

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

Другие вопросы по тегам