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:
Puis il m'a fallut faire les rules correspondant:Code:
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...
insert:
delete:Code:
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) );
updateCode:
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 );
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! 8OCode:
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 );
Je ne comprends pas... je tourne en rond en faisant plein de tests mais sans succès! Qqun aurait une idée?