在表单上创建行时出错
Error creating row on form
我尝试在 APEX 上的某个页面中创建新行后,出现以下错误:
ORA-02291: integrity constraint (BD43015.SYS_C001194280) violated - parent key not found ORA-06512: at "BD43015.INSERT_STUDENT", line 4 ORA-04088: error during execution of trigger 'BD43015.INSERT_STUDENT' ORA-06512: at "SYS.WWV_DBMS_SQL", line 549 ORA-06512: at "APEX_040000.WWV_FLOW_DML", line 1121 ORA-22816: unsupported feature with RETURNING clause
Error Unable to process row of table V_ALLSTUDENTS.
OK
注意:我正在尝试使用此触发器:
create or replace trigger insert_student
instead of insert on v_allstudents
for each row
begin
insert into members values(:new.memberID, :new.name, :new.birth, :new.regist_date, :new.address, :new.sex, :new.phone);
insert into students values(:new.memberID, :new.guardian, :new.rank, :new.plan_name, :new.plan_value);
end;
/
而这个观点:
create or replace view v_allstudents(memberID, name, birth, regist_date, address, sex, phone, guardian, rank, plan_name, plan_value) AS
select members.memberID, name, birth, regist_date, address, sex, phone, guardian, rank, plan_name, plan_value
from members, students
where members.memberID = students.memberID
order by members.name;
Table 成员:
drop table members cascade constraints;
create table members(
memberID number(10) not null,
name varchar2(30) not null,
birth date not null,
regist_date date not null,
address varchar2(50) not null,
sex char(1) not null CHECK (sex IN ('F', 'M')),
phone number(9),
primary key(memberID)
);
Table 同学们:
drop table students cascade constraints;
create table students(
memberID number(10) not null,
guardian varchar2(30),
rank varchar2(20) not null,
plan_name varchar2 (30) not null,
plan_value number(10) not null,
primary key(memberID),
foreign key(memberID) references members(memberID)
);
编辑修复:我们的触发器与 memberID
.
的插入冲突
我可以从 SQLPLUS 成功重现该问题。
以下语句有效。
declare
v_memberid number;
begin
insert into
v_allstudents(memberID, name, birth, regist_date, address, sex, phone, guardian, rank, plan_name, plan_value)
values
(1,'Neo',to_date('13-Jan-2009','dd-mon-yyyy'),to_date('13-Jan-2009','dd-mon-yyyy'),'My address','M',1234,'Trinity',1,'My Plan',2525)
end;
以下语句不起作用并抛出 ORA-22816。
declare
v_memberid number;
begin
insert into
v_allstudents(memberID, name, birth, regist_date, address, sex, phone, guardian, rank, plan_name, plan_value)
values
(1,'Neo',to_date('13-Jan-2009','dd-mon-yyyy'),to_date('13-Jan-2009','dd-mon-yyyy'),'My address','M',1234,'Trinity',1,'My Plan',2525)
returning memberID into v_memberid;
end;
这是来自 Oracle 文档的错误描述。
RETURNING 子句目前不支持对象类型列、LONG 列、远程表、带子查询的 INSERT、 和 INSTEAD OF 触发器。
在这种情况下,Oracle Apex 正在生成带有返回子句的插入语句,或者您已经在 Oracle Apex 中编写了带有返回子句的定制代码。
我建议取消而不是触发器,并使用 Oracle 顶点表单将值插入到这两个表中。
我尝试在 APEX 上的某个页面中创建新行后,出现以下错误:
ORA-02291: integrity constraint (BD43015.SYS_C001194280) violated - parent key not found ORA-06512: at "BD43015.INSERT_STUDENT", line 4 ORA-04088: error during execution of trigger 'BD43015.INSERT_STUDENT' ORA-06512: at "SYS.WWV_DBMS_SQL", line 549 ORA-06512: at "APEX_040000.WWV_FLOW_DML", line 1121 ORA-22816: unsupported feature with RETURNING clause Error Unable to process row of table V_ALLSTUDENTS. OK
注意:我正在尝试使用此触发器:
create or replace trigger insert_student
instead of insert on v_allstudents
for each row
begin
insert into members values(:new.memberID, :new.name, :new.birth, :new.regist_date, :new.address, :new.sex, :new.phone);
insert into students values(:new.memberID, :new.guardian, :new.rank, :new.plan_name, :new.plan_value);
end;
/
而这个观点:
create or replace view v_allstudents(memberID, name, birth, regist_date, address, sex, phone, guardian, rank, plan_name, plan_value) AS
select members.memberID, name, birth, regist_date, address, sex, phone, guardian, rank, plan_name, plan_value
from members, students
where members.memberID = students.memberID
order by members.name;
Table 成员:
drop table members cascade constraints;
create table members(
memberID number(10) not null,
name varchar2(30) not null,
birth date not null,
regist_date date not null,
address varchar2(50) not null,
sex char(1) not null CHECK (sex IN ('F', 'M')),
phone number(9),
primary key(memberID)
);
Table 同学们:
drop table students cascade constraints;
create table students(
memberID number(10) not null,
guardian varchar2(30),
rank varchar2(20) not null,
plan_name varchar2 (30) not null,
plan_value number(10) not null,
primary key(memberID),
foreign key(memberID) references members(memberID)
);
编辑修复:我们的触发器与 memberID
.
我可以从 SQLPLUS 成功重现该问题。
以下语句有效。
declare
v_memberid number;
begin
insert into
v_allstudents(memberID, name, birth, regist_date, address, sex, phone, guardian, rank, plan_name, plan_value)
values
(1,'Neo',to_date('13-Jan-2009','dd-mon-yyyy'),to_date('13-Jan-2009','dd-mon-yyyy'),'My address','M',1234,'Trinity',1,'My Plan',2525)
end;
以下语句不起作用并抛出 ORA-22816。
declare
v_memberid number;
begin
insert into
v_allstudents(memberID, name, birth, regist_date, address, sex, phone, guardian, rank, plan_name, plan_value)
values
(1,'Neo',to_date('13-Jan-2009','dd-mon-yyyy'),to_date('13-Jan-2009','dd-mon-yyyy'),'My address','M',1234,'Trinity',1,'My Plan',2525)
returning memberID into v_memberid;
end;
这是来自 Oracle 文档的错误描述。
RETURNING 子句目前不支持对象类型列、LONG 列、远程表、带子查询的 INSERT、 和 INSTEAD OF 触发器。
在这种情况下,Oracle Apex 正在生成带有返回子句的插入语句,或者您已经在 Oracle Apex 中编写了带有返回子句的定制代码。
我建议取消而不是触发器,并使用 Oracle 顶点表单将值插入到这两个表中。