Проверка ссылочной целостности перед удалением в 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 в соответствии с вашим предложением заключается в том, что между проверкой и отображением и фактической попыткой удаления может быть разница во времени, даже небольшая.