插入行上出现 Oracle APEX 错误 - ORA-00001:违反了排他限制 (ASCHEMAXXXXX.Table_name_PK)

问题描述 投票:0回答:1

为什么我在尝试在 APEX 应用程序中插入新行时收到此错误?

ORA-00001: exclusive restriction (ASCHEMAXXXXX.Table_name_PK) violated

页面加载时有一个动态操作来获取其中一个字段的下一个值。

我尝试创建一个序列并在主键上使用它,但得到了

.nextvalue not declared

triggers oracle-apex primary-key
1个回答
0
投票

您没有解释该动态动作实际上是做什么的,但是 - 看起来它并没有按照您的意思去做。另外,这是一个什么样的页面?形式?交互式网格?还有别的事吗?考虑发布尽可能多的信息;否则,很难猜测会发生什么。


假设您尝试使用序列,那么:如果您的数据库版本支持它,为什么不切换到identity列并让数据库处理 PK 值呢?例如:

SQL> create table test
  2    (id          number generated always as identity primary key,
  3     name        varchar2(20));

Table created.

SQL> insert into test (name) values ('Littlefoot');

1 row created.

SQL> select * from test;

        ID NAME
---------- ----------
         1 Littlefoot

SQL>

另一种选择是使用序列+触发组合:

SQL> create table test
  2    (id     number primary key,
  3     name   varchar2(20));

Table created.

SQL> create sequence seq_test;

Sequence created.

SQL> create or replace trigger trg_bi_test
  2    before insert on test
  3    for each row
  4  begin
  5    :new.id := seq_test.nextval;
  6  end;
  7  /

Trigger created.

SQL> insert into test (name) values ('Littlefoot');

1 row created.

SQL> select * From test;

        ID NAME
---------- ----------
         1 Littlefoot

SQL>
© www.soinside.com 2019 - 2024. All rights reserved.