我正在尋找觸發器的幫助。通過觸發器更新pl/sql中多個表的記錄
我有如下表格。
CREATE TABLE Autorzy(Id_autora numeric(5), Imie varchar(15), Nazwisko varchar(20), constraint auth_pk PRIMARY KEY (Id_autora));
CREATE TABLE Ksiazki(ISBN numeric(10) PRIMARY KEY, Wydawca varchar(30), Tytul varchar(70), Rok numeric(4));
CREATE TABLE Autorstwa (ISBN numeric(10) references Ksiazki, Id_autora numeric(5) references Autorzy);
CREATE TABLE Tematy (Nrtematu numeric(4) PRIMARY KEY, Nazwa varchar(20), Wyjasnienie varchar (100));
CREATE TABLE Na_temat(ISBN numeric(10) references Ksiazki, Nrtematu numeric(10) references Tematy);
create sequence id_autora_seq
start with 1
increment by 1
;
create sequence isbn_seq
start with 1
increment by 1
;
我必須實現表Autorzy,Ksiazki和Autorstwa的插入。
如下
insert into Autorzy
values(Id_autora_seq.nextval, 'Jan', 'Mak');
insert into Ksiazki
values (isbn_seq.nextval, 'ABC', 'Poradnik', 2010);
我不知道如何使更新Autorstwa表我已經prepered插入。
我試着用觸發器作爲belowe
create or replace
trigger Autorstwa_auth
after insert or update on keiishi.Autorzy
for each row
begin
insert into Autorstwa (Id_autora)
values (:new.id_autora);
end;
create or replace
trigger Autorstwa_ks
after insert or update on keiishi.Ksiazki
for each row
begin
insert into Autorstwa (ISBN)
values (:new.ISBN);
end;
它創造了Autorstwa表兩排和它的對我來說是不可接受的。
任何人都可以解釋我如何使多個表更新觸發器?
或者其他一些方法我可以做到嗎?
在此先感謝。
問候
Keiishi
我不明白這是如何工作的:它似乎有在該模式中Autorstwa FK約束,一個人如何能做到的插入該表中而不知道必須使用哪些鍵? – didierc
嗨鮑勃感謝的答案:) 我已經試過這和它的一些變化工作後, 使用(選擇:NEW.ID_AUTORA FROM DUAL) ON(a.ID_AUTORA =新:ID_AUTORA) WHEN NOT MATCHED THEN INSERT( ID_AUTORA) VALUES(:NEW.ID_AUTORA); 但不幸的是我仍然得到兩行不是一個。 – Keiishi
迪迪埃可以告訴你,'不知道鑰匙'是什麼意思?我仍然在學習這些東西,可能我錯過了一些東西。我看到,'如果我有參考,那麼它的列與確切的名稱作爲一個即時通訊引用'。還是我錯了? – Keiishi