我正在使用APEX创建一个具有以下PL/SQL方案的羊群管理应用程序:
-- SHEEP table
create table sheep (
sheep_id number(*,0) generated by default on null as identity,
eid varchar2(6) not null,
sex varchar2(6) not null,
name varchar2(45),
breed varchar2(255) not null,
birth date,
sheep_state varchar2(45) not null,
lambs number(*,0) not null,
lambs_sets number(*,0) not null,
markings varchar2(4000),
note varchar2(4000),
constraint sheep_pk primary key (sheep_id)
);
-- EVENT table
create table event (
event_id number(*,0) generated by default on null as identity,
sheep_id varchar2(6) not null,
name varchar2(255) not null,
event_date date not null,
description varchar2(4000) not null,
location varchar2(45) not null,
constraint event_pk primary key (event_id)
);
-- SALE table
create table sale (
sale_id number(*,0) generated by default on null as identity,
sheep_id varchar2(6) not null,
price number(*,2) not null,
sale_date date not null,
location varchar2(45) not null,
note varchar2(4000),
constraint sale_pk primary key (sale_id)
);在该方案中,SALE和EVENT表引用绵羊表的EID (唯一标识符为5个数字和一个字母--代表他们耳朵中的黄色标记)。我正在尝试创建一个主详细信息页面,该页面将绵羊与特定事件(绵羊身上发生的事情)和销售历史(如果已经售出,何时、何地、以多少)联系起来。
我尝试同时使用创建应用程序向导和创建页面向导,但是每次我都收到相同的错误:
Ajax调用返回服务器错误ORA-06531:引用未初始化的集合以执行PL/SQL代码。
它仍然允许我在向导中继续,但是当我想选择details表(SALE & EVENT)时,它们甚至不会出现在选择list (cf 这里)中。
有人有主意吗?我对APEX非常陌生,我可能错过了一些东西。此外,如果您有任何建议考虑到我的关系方案(改变,提高效率),不要犹豫地告诉我。
提前感谢!
发布于 2021-08-27 14:13:13
事件和绵羊之间没有关系,销售和绵羊之间也没有关系。您可以声明SALE和EVENT表引用绵羊表的EID字段,但是数据库不知道这一点,因为这种关系还没有通过外键来定义。表中的外键引用另一个表的主键,即使它是唯一的,也不能引用另一个列(如EID)。
在脚本中,在所有表中创建sheep_id NUMBER,并在出售和事件中创建一个外键。如下所示:
-- SHEEP table
create table sheep (
sheep_id number(*,0) generated by default on null as identity,
eid varchar2(6) not null,
sex varchar2(6) not null,
name varchar2(45),
breed varchar2(255) not null,
birth date,
sheep_state varchar2(45) not null,
lambs number(*,0) not null,
lambs_sets number(*,0) not null,
markings varchar2(4000),
note varchar2(4000),
constraint sheep_pk primary key (sheep_id)
);
-- EVENT table
create table event (
event_id number(*,0) generated by default on null as identity,
sheep_id number not null,
name varchar2(255) not null,
event_date date not null,
description varchar2(4000) not null,
location varchar2(45) not null,
constraint event_pk primary key (event_id),
constraint fk_event_sheep
foreign key (sheep_id)
references sheep(sheep_id)
);
-- SALE table
create table sale (
sale_id number(*,0) generated by default on null as identity,
sheep_id number not null,
price number(*,2) not null,
sale_date date not null,
location varchar2(45) not null,
note varchar2(4000),
constraint sale_pk primary key (sale_id),
constraint fk_sale_sheep
foreign key (sheep_id)
references sheep(sheep_id)
);这是在关系数据库系统中创建主细节关系的方法,它还允许您在APEX中创建主细节表单。
https://stackoverflow.com/questions/68953581
复制相似问题