在 APEX 20.1 中删除之前检查参照完整性

问题描述

用户尝试删除代码/验证记录时,我想检查该记录中的代码删除尝试之前是否已被使用,以便我可以显示比 Oracle 约束更有意义的消息错误

例如:“此代码无法删除,因为它已在课程记录中引用。请改为将其停用。”

谁能给我关于采取的方法一般建议?

我的第一个想法是创建一个与“删除”按钮相关联的动态操作。不过,我认为可能有更好的方法

解决方法

您已经说过了 - 创建一个验证,它们就是为此目的而设计的。使其成为返回错误文本的函数体。编写一段代码并显示一条消息。类似的东西

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

sample 提供了有关如何将任何已知约束转换为对用户更友好的消息的详细信息。

按照您的建议创建 DA 的危险在于,检查和显示与实际删除尝试之间可能存在时间差异,无论多么小。