微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在oracle apex中提交后如何自动将外键插入表中?

如何解决在oracle apex中提交后如何自动将外键插入表中?

我创建了用户可以在其中输入数据的表单。使用集合保存信息,并在提交表单后插入到相应的表中。

现在表中的一列仍然是空的,我不知道如何在 APEX 中解决它。

也就是说,该表具有到另一个表的外键。

但是这个表的ID是提交表单后才生成的。

我可以解决它吗,例如,在提交表单后将外键输入表中的触发器?

会是这样的插入后触发器吗:

CREATE OR REPLACE TRIGGER INSERT_FK
AFTER INSERT
ON TBL1 
FOR EACH ROW 
begin
  INSERT INTO TBL2
  VALUES (:NEW.STUID);
  EXCEPTION
    WHEN NO_DATA_FOUND
    THEN
        DBMS_OUTPUT.put_line (TO_CHAR (sqlERRM (-20299)));
    WHEN OTHERS
    THEN
        DBMS_OUTPUT.put_line (TO_CHAR (sqlERRM (-20298)));
end;

或者有其他更好的解决方案吗?

解决方法

我不会为此使用触发器,而是在您的应用程序中处理它。 您可以通过使用 RETURNING INTO 子句来实现这一点。这允许您在同一事务中重用插入列的值。如果这是在页面进程中的匿名 pl/sql 块中,它将是这样的:

DECLARE
  l_id table1.id%TYPE;
BEGIN
  INSERT INTO table1(val) VALUES ('Europe')
    RETURNING id INTO l_id;
  INSERT INTO table2(continent_id,val) VALUES (l_id,'Belgium');
END;
/

在顶点表单中,您可以选择在插入/更新后将主键返回到页面项中,以便您可以在使用内置表单处理的其他进程中使用它。

,

这行不通;您只需将 :new.stuid 列值插入到“可能”成功的 TBL2 中(如果 tbl2 中的其他列不是 NOT NULL),但是 - 所有其他列都将保持空白。

我想你应该在你还在 Apex 时准备所有数据(即获取 tbl1 的主键,同时 - 将它用作外键值tbl2)。否则,以后无法填充该信息,因为这两个表之间没有其他关系(如果有,您就不需要外键列,对吗?)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。