Bonjour,

J'ai les 3 tables suivantes dans ma bdd :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
insert into dod_view values ("france","NOUVELLE","UE");
J'ai l'erreur suivante :
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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