0

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

问候,

4

1 回答 1

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;
于 2012-11-13T07:28:30.380 回答