分配給孩子,我有兩個表:創建於父表觸發器,可以在子表創建行和新的父PK爲FK
Customer (customerID, firstName, lastName,....)
Account (accountID, currentBalance....customerID) customerID references CUSTOMER.
的表有一個1:M(客戶:賬戶),Mandatory-強制性關係。 我想設置自動創建當父插入子行觸發器,研究堆後和其他地方我已成功地創建父一個觸發器,創建在子行:
CREATE OR REPLACE TRIGGER CMustHaveAccount
AFTER INSERT ON CUSTOMER
FOR EACH ROW
BEGIN
INSERT INTO ACCOUNT (accountID)
SELECT SEQACCOUNTID.NEXTVAL
FROM dual;
END;
/
我所有的嘗試設置FK在賬戶中的客戶都沒有新的PK,我嘗試了一些觸發器,最有前途的幸福的:
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:表。客戶被突變,觸發/功能可能無法看到它
。 如果我將觸發器更改爲BEFORE,則會給出錯誤ORA-01400: cannot insert NULL into ("ACCOUNT"."ACCOUNTID")
。我假設,因爲技術上插入尚未完成,所以我插入到客戶的PK尚不存在。
我想要一個觸發器,它將一個值插入到Account中,並在我的序列中有一個主鍵,當在Customer中創建一行時,並且PK customerID被自動分配給ACCOUNT中的customerID爲外鍵。
我只是在學習SQL和數據庫,如果答案很明顯,請原諒我。 非常感謝!
它的工作原理如此簡單。我一直在掙扎數小時,非常感謝。 – user6898323