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