0

テーブル A と B の 2 つのテーブルがあります。テーブル A の主キー列の値をテーブル B の外部キー列にそれぞれコピーまたは表示したいのですが、親切に助けてくれる方法はありますか。

よろしく、

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);

最初のアプローチ。この方法により、値を挿入するときに2番目のテーブルにデータを入力できます。

INSERT INTO t1
  VALUES   (1, SYSDATE
              );

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

トリガーを使用すると、最初のテーブルに値が挿入されると、トリガーを使用して 2 番目のテーブルの値が入力されます。したがって、最初のテーブルの主キー値がテーブル 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 に答える