【问题标题】:Unique constraint validation APEX唯一约束验证 APEX
【发布时间】:2018-05-25 17:48:23
【问题描述】:

我已经为我的应用程序中的文本字段创建了验证。 文本字段是“位置”。它有一个独特的约束,当你输入一个现有的位置时,它会给你一个 ORA 错误消息。而不是这个,我想显示一个字段内联错误消息。 我做了以下。

  1. 创建验证
  2. 类型:项目=值
  3. 项目 = :P3_LOCATION,值 = #LOCATION#
  4. 错误消息:位置已存在。与字段内联。关联项目是:P3_LOCATION
  5. 服务器端条件
  6. 按下按钮时:CREATE,Type = Item is NOT NULL,Item = P3_LOCATION。

这正是我想要的,但是当我尝试创建一个新位置时,它也会给我这个错误消息。我该怎么做才能让它只影响已经存在的位置?

【问题讨论】:

  • 你如何告诉它创建一个新位置?您也想更改验证条件以进行检查。例如,如果是 Y/N 复选框,您可以执行 :REQUEST = 'CREATE' and :P3_IS_NEW_LOCATION = 'N' 之类的操作。
  • 请添加create table ... 声明。我们很难弄清楚你到底做了什么。

标签: sql oracle oracle-apex oracle-apex-5.1


【解决方案1】:

好吧,您永远无法真正控制您现在输入的位置是否已经存在于表格中。

我建议如下:

  • 为项目创建验证
  • 它的类型是“PL/SQL 函数(返回错误文本)”
  • PL/SQL 函数体:

    declare
      l_loc your_table.location%type;
    begin
      select location
        into l_loc
        from your_table
        where location = :P3_LOCATION;
    
      return ('Location already exists');
    exception
      when no_data_found then null;
    end;
    
  • 显示位置:与字段内联

  • 关联项目:P3_LOCATION
  • 按下按钮时:创建

【讨论】:

  • 最好是“不返回任何行”的 SQL 查询,将编码留给 APEX 团队。
猜你喜欢
  • 1970-01-01
  • 2013-05-21
  • 2015-05-08
  • 2019-02-24
  • 2015-11-13
  • 2015-04-13
  • 2012-06-15
  • 2015-03-24
  • 1970-01-01
相关资源
最近更新 更多