[debutant]vue et clé-auto-incrémentée
Bonjour,
J'ai sur ma base les tables:
test1
Code:
1 2 3 4
| create table test1(
id number(9) not null,
adresse varchar2(10),
constraint test1_pk primary key (id)); |
test2
Code:
1 2 3 4 5 6
| create table test2(
id number(9) not null,
nom varchar2(10),
test1_id number(9),
constraint test2_pk primary key (id),
constraint test2_fk foreign key (test1_id) references test1 (id)); |
et la vue:
Code:
1 2
| create view vue_test2 as select T.nom, T.test1_id, C.adresse, T.id from test1 C, test2 T
where T.test1_id=C.id; |
Les clés primaires de mes tables sont auto-incrémentées et je souhaite lors d'un insert sur la vue que les tables test1 et test2 soient mises à jour.
J'ai donc fait:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| create or replace trigger tr_test1 instead of insert on vue_test2
begin
insert into test1
(id, adresse)
values(
:new.test1_id,
:new.adresse);
insert into test2
(id, nom, prenom, test1_id)
values(
:new.id,
:new.nom,
:new.prenom,
:new.test1_id);
end; |
puis
Code:
insert into vue_test2 (nom,prenom, test1_id, id, adresse) values ('ss','zz',9, 9, 'lille')
Avec test1_id=9 et id=9 n'existant pas encore.
Ca marche mais j'aimerais ne pas avoir à préciser l'id de la table test2 et test1, et que lorsque l'adresse existe déja dans la table test1 aucune ligne ne soit rajoutée.
Pb je n'y arrive pas.
Si vous avez des idées pouvant m'aider ou besoin de plus de précisions...
Je précise que je peux changer la vue (enlever colonne id,...) si nécessaire.
Merci