将主键值复制或显示到另一个表中作为外键APEX

时间:2012-11-10 05:49:12

标签: oracle oracle11g oracle-apex

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

此致

1 个答案:

答案 0 :(得分: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;