Salut,

Je souhaite créer une vue sur deux tables puis pouvoir effectuer des update, insert, delete et select sur cette vue.

J'ai créé ma vue:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
create view vue1 as
select c.id, c.version, pe.idor
from table1 c, table2 pe
where c.id = pe.idor;//il y a un héritage derrière...
Puis il m'a fallut faire les rules correspondant:

insert:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
create or replace rule rivue1 
as on insert to vue1
do instead 
(
    insert into table1 (id,version) 
    values (new.id,new.version);
    insert into table2 (idcol,idor)
    values (new.id,new.idor)
);
delete:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
create or replace rule rdvvue1
as on delete to vue1
do instead 
(
    delete from table2 
    where idcol = old.id;
    delete from table1 
    where id = old.id  
);
update
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
create or replace rule ruvue1 
as on update to vue1 
do instead 
(
    update table1
    set id = new.id, version = new.version
    where id = old.id;
    update table2
    set idcol = new.id, idor = new.idor
    where idcollection = old.id
);
Alors il est possible de faire des select sans problème. L'insert se passe également correctement mais par contre dès que j'essaye de faire un delete, les enregistrements de ma première table sont supprimés mais pas dans ma deuxième table!

Je ne comprends pas... je tourne en rond en faisant plein de tests mais sans succès! Qqun aurait une idée?