【问题标题】:Copy or show the primary key value into another table as foreign key APEX将主键值复制或显示到另一个表中作为外键 APEX
【发布时间】:2012-11-10 05:49:12
【问题描述】:

我有两个表A和B。我想分别在表B的外键列中复制或显示表A的主键列值。有什么方法可以帮助我。

问候,

【问题讨论】:

  • 那么你想用表A的主键作为表B的外键吗?
  • 不,我想调用或显示表 A 的主键值作为表 B 中的外键值
  • 您能否更具体地了解您正在寻找的内容或提供一些示例数据的预期输出?
  • 我有两个表A和B。主键列与表B中的外键相关。当我在表A的主键列中插入数据时,Primary的数据相同表A中的键未显示在表B列中,即外键。请检查图像img641.imageshack.us/img641/5498/36379097.png。这里的 Vendor_InvoiceDetSerNo 是外键列。
  • 如果A表的主键在B表中被引用为外键,不插入B表就不能使用。你需要插入它。所以你可以使用一些触发器或从应用程序中你应该能够做到这一点。

标签: oracle oracle11g oracle-apex


【解决方案1】:

您可以在填充表 B 时填充主键值,或者在填充表 A 时使用触发器。

CREATE TABLE t1 (id1 NUMBER, dt DATE);

 ALTER TABLE t1 ADD (
  CONSTRAINT t1_pk
 PRIMARY KEY
 (id1));


CREATE TABLE t2 (id2 NUMBER, id1 NUMBER, dt2 DATE);

 ALTER TABLE t2 ADD (
  CONSTRAINT t2_pk
 PRIMARY KEY
 (id2));
ALTER TABLE t2
 ADD CONSTRAINT t2_r01
 FOREIGN KEY (id2)
 REFERENCES t1 (id1);

第一种方法,通过这种方式,您可以在插入值时填充第二个表。

INSERT INTO t1
  VALUES   (1, SYSDATE
              );

INSERT INTO t2
  VALUES   (1, 1, SYSDATE
              );

使用触发器,因此当将值插入第一个表时,第二个表的值会使用触发器填充。所以第一个表的主键值被插入到表2的外键中。

CREATE OR REPLACE TRIGGER my_trigger
    AFTER INSERT
    ON t1
    FOR EACH ROW
BEGIN
    INSERT INTO t2
      VALUES   (1, :new.id1, SYSDATE
                  );
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;

【讨论】:

  • 让我检查一下这个触发代码...谢谢
  • @MuhammadUsman 那就更简单了,在表1中插入时,在项目级别或页面级别,同时插入到表2中。在 APEX 中有几个选项可以做到这一点。
猜你喜欢
  • 2013-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多