Apex 4.0.2应用程序中的主键增量

时间:2017-11-30 08:50:05

标签: sql oracle-apex sqlplus

因此,作为我正在进行的项目的一部分,我受限于编辑我正在构建此应用程序的数据库。我无法直接从SQL命令提示符对数据库进行更改,所有更改和新条目都必须通过Apex进行。只是澄清一下。

所以我有一个表TAXIUSER,它有TAXIUSERID的主键。当前数据库中数据的主键格式如下:

  • UID0001
  • UID0002

等等。目前,用户每次向表添加条目时都必须手动输入新的主键。如何通过Apex应用程序(我也不能使用SQL Workshop!)可以实现一些允许用户不必手动输入主键的内容,并且最好还是以上述格式增加。

编辑:对不起我应该澄清我在表格上使用报表和版本11g。

1 个答案:

答案 0 :(得分:1)

您可以通过创建一个默认值(或计算)为

的只读项来完成此操作
SELECT
  'UID'||LPAD(MAX(SUBSTR(taxiuserid,4) + 1),4,0)
  FROM 
  taxiuser;

请注意,您的先决条件(无法访问数据库)迫使这是一个有缺陷的方法:

  • 如果有2个或更多用户同时创建记录,则主键约束违规出错。您可以通过计算提交时的新值来最小化风险,但用户在创建用户时不会看到该值
  • 仅适用于前9999个用户

编辑:如果在提交方法后使用计算,则需要添加条件以允许对现有条目进行编辑。否则,计算将尝试更改该条目的主键,从而导致错误。要做到这一点,只需在表达式1中添加一个Value的条件为Null,然后指定从中输入数据的列,如下所示:

P8_TAXIUSERID

这实质上意味着当P8_TAXIUSERID(您输入数据的列)包含空值时,计算只会尝试TAXIUSERID的值。