我正在寻找触发器的帮助。通过触发器更新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