Vue sur 3 tables : transaction possible ?
Bonjour,
J'ai les 3 tables suivantes dans ma bdd :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| CREATE TABLE implication
(
implication_id serial NOT NULL,
name character varying(20) NOT NULL,
CONSTRAINT pk_implication PRIMARY KEY (implication_id)
)
CREATE TABLE "type"
(
type_id serial NOT NULL,
name character varying(20) NOT NULL,
CONSTRAINT pk_type PRIMARY KEY (type_id)
)
CREATE TABLE dod
(
dod_id serial NOT NULL,
type_id integer,
implication_id integer,
name character varying(20),
CONSTRAINT pk_dod PRIMARY KEY (dod_id),
CONSTRAINT implication_id_fk FOREIGN KEY (implication_id)
REFERENCES implication (implication_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT type_id_fk FOREIGN KEY (type_id)
REFERENCES "type" (type_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
) |
Et la vue suivante :
Code:
1 2 3 4
| CREATE OR REPLACE VIEW dod_view AS
SELECT dod.name AS dod_name, type.name AS type_name, implication.name AS implication_name
FROM dod, type, implication
WHERE dod.type_id = type.type_id AND dod.implication_id = implication.implication_id; |
A l'heure actuelle, ma vue contient les éléments suivants :
Code:
1 2
| 1 : "tchad";"NOUVELLE";"OTAN"
2 : "senegal";"NOUVELLE";"UE" |
Je souhaite pouvoir effectuer des transactions directement sur cette vue.
Je teste pour l'instant l'insertion mais je n'y arrive pas.
Si je fais directement un insert ça ne fonctionne pas :
Code:
insert into dod_view values ("france","NOUVELLE","UE");
J'ai l'erreur suivante :
Citation:
ERROR: column "france" does not exist
LINE 1: insert into dod_view values ("france","NOUVELLE","UE");
Si je passe par la création d'une Rule, j'ai exactement la même erreur :
Code:
1 2 3 4
| CREATE OR REPLACE RULE insert_dod_view AS
ON INSERT TO dod_view DO INSTEAD INSERT INTO dod (name, type_id, implication_id) SELECT new.dod_name, type.type_id, implication.implication_id
FROM dod, type, implication
WHERE new.type_name::text = type.name::text AND new.implication_name::text = implication.name::text AND implication.implication_id = dod.implication_id AND type.type_id = dod.type_id; |
Pourriez vous m'aider ?
Merci d'avance.
WwAvE