Apex 4.0.2 从应用程序内部增加主键

Apex 4.0.2 Primary Key Incrementation from with-in an Application

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

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

等等。目前,用户每次向 table 添加条目时都必须手动输入新的主键。如何单独通过 Apex 应用程序(我也不能使用 SQL Workshop!)我可以实现一些让用户不必手动输入主键并且最好让它以上述格式递增的东西。

编辑:抱歉,我应该澄清一下,我在 Table 上使用一个带有报告和版本 11g 的表格。

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

的只读项目来做到这一点
SELECT
  'UID'||LPAD(MAX(SUBSTR(taxiuserid,4) + 1),4,0)
  FROM 
  taxiuser;

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

  • 如果 2 个或更多用户同时创建记录,则会出现违反主键约束的错误。您可以通过在提交时计算新值来最大限度地降低风险,但用户在创建用户时将看不到该值
  • 只适用于前 9999 位用户

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

P8_TAXIUSERID

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