として子供に新しい親PKを割り当てる親テーブル上のトリガーを作成します必須の関係。 私は別の場所スタックを調査した後、私は子供の行を作成し、親にトリガを作成するために管理している、セットアップに親が挿入されたときに自動的に子行を作成し、トリガーをしようとしています:は、私は2つのテーブルを持っている子表の行が作成され、FK
CREATE OR REPLACE TRIGGER CMustHaveAccount
AFTER INSERT ON CUSTOMER
FOR EACH ROW
BEGIN
INSERT INTO ACCOUNT (accountID)
SELECT SEQACCOUNTID.NEXTVAL
FROM dual;
END;
/
お客様に新しいPKとしてアカウントにFKを設定するために、すべての私の試みは失敗している、私は、最も有望なビーイングのトリガの数を試してみました:
CREATE OR REPLACE TRIGGER AMustHaveCustomer
AFTER INSERT ON CUSTOMER
FOR EACH ROW
BEGIN
INSERT INTO ACCOUNT (customerID)
SELECT :new.customerID
FROM CUSTOMER;
END;
/
このトリガは、エラー
をバックスローORA-04091:表.CUSTOMERが変異され、トリガー/関数は
を参照しなくてもよいです。 トリガーをBEFOREに変更すると、エラーORA-01400: cannot insert NULL into ("ACCOUNT"."ACCOUNTID")
が返されます。私は技術的に挿入が完了していないので、顧客に挿入しているPKがまだ存在しないと想定しています。
シーケンスにプライマリキーを挿入し、顧客で行が作成されたときに、アカウントに値を挿入するトリガを設定したいとします。また、PK customerIDが自動的にACCOUNTのcustomerIDに割り当てられます。外部キー。
私はSQLとデータベースを勉強していますが、その答えが明白であれば私をよろこんでください。 大変助かりました!
これは機能し、とても簡単です。私は何時間も苦労してきました。ありがとうございました。 – user6898323