为什么我在尝试在 APEX 应用程序中插入新行时收到此错误?
ORA-00001: exclusive restriction (ASCHEMAXXXXX.Table_name_PK) violated
页面加载时有一个动态操作来获取其中一个字段的下一个值。
我尝试创建一个序列并在主键上使用它,但得到了
.nextvalue not declared
。
您没有解释该动态动作实际上是做什么的,但是 - 看起来它并没有按照您的意思去做。另外,这是一个什么样的页面?形式?交互式网格?还有别的事吗?考虑发布尽可能多的信息;否则,很难猜测会发生什么。
假设您尝试使用序列,那么:如果您的数据库版本支持它,为什么不切换到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>