You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过外键将Table A的NUMBER值传入Table B?含Oracle APEX场景

外键关联下表间数据传递逻辑与SQL实现

一、普通数据库场景(无Oracle APEX)

核心逻辑

通过TABLE B的外键A_ID关联TABLE A的ID字段,以此为纽带将TABLE A的NUMBER值同步到TABLE B的ENTERED_NUMBER字段,分为更新已有数据和插入新数据两种场景:

1. 更新TABLE B已有数据

UPDATE TABLE B
SET ENTERED_NUMBER = (SELECT NUMBER FROM TABLE A WHERE TABLE A.ID = TABLE B.A_ID)
WHERE EXISTS (SELECT 1 FROM TABLE A WHERE TABLE A.ID = TABLE B.A_ID);
  • 用EXISTS子句过滤掉TABLE B中无对应TABLE A记录的行,避免ENTERED_NUMBER被设置为NULL。

2. 插入新数据到TABLE B时同步值

单条插入(指定A表ID)

INSERT INTO TABLE B (A_ID, ENTERED_NUMBER)
SELECT ID, NUMBER FROM TABLE A WHERE ID = 123; -- 替换为实际的A表ID值

批量插入

INSERT INTO TABLE B (A_ID, ENTERED_NUMBER)
SELECT ID, NUMBER FROM TABLE A;

二、Oracle APEX场景(页面2对应TABLE A,页面3对应TABLE B)

APEX中可直接引用页面项(如:P2_NUMBER、:P3_A_ID)的值,结合页面间参数传递实现数据同步:

1. 页面3提交时写入TABLE B

插入新记录

INSERT INTO TABLE B (A_ID, ENTERED_NUMBER)
VALUES (:P3_A_ID, :P2_NUMBER);
  • 需确保页面2跳转至页面3时,已将:P2_ID传递给:P3_A_ID(可在页面2的跳转按钮中设置参数传递)。

更新已有记录

UPDATE TABLE B
SET ENTERED_NUMBER = :P2_NUMBER
WHERE A_ID = :P3_A_ID;

2. 页面3加载时自动填充字段

无需编写SQL,直接在APEX页面设计中设置P3_ENTERED_NUMBER的默认值为:P2_NUMBER,并确保页面跳转时传递P2_NUMBER参数(或依赖APEX会话保留该值)。

内容的提问来源于stack exchange,提问作者Omatayo Holder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 06:32:38