PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 31/07/2014 16:15:39

Geo-x
Membre

Problème de régle d'insertion vue

Bonjour @tous,

je bloque sur un problème qui n'en était pas un jusqu'à aujourd'hui, je m'explique :

J'ai une table tableA (col1,col2,col3,col4) et j'ai une vue view_tableA (col2,col3)

J'ai associé à ma vue une règle d'insertion :

CREATE OR REPLACE RULE "_INSERT" AS
ON INSERT TO view_tableA DO INSTEAD  INSERT INTO tableA (col2,col3) VALUES (col2,col3);

Le problème c'est que Potgres n'apprécie pas vraiment, mais je n'arrive pas à comprendre pourquoi :

You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause

Est-ce que vous avez une idée d’où pourrait venir le problème ?
(Pour info complémentaire, j'ai également des règles associées à la mise à jour et à la suppression d'objet)

Geo-x

Hors ligne

#2 31/07/2014 19:16:42

rjuju
Administrateur

Re : Problème de régle d'insertion vue

Bonjour,

quelle version de postgres utilisez vous ? Il me semble qu'il faut de toutes façons préciser le NEW dans le insert :

DO INSTEAD  INSERT INTO tableA (col2,col3) VALUES (NEW.col2,NEW.col3);

Il est également préférable d'utiliser un trigger plutôt qu'une règle pour les modifications sur les vues (à partir de la 9.1).

Hors ligne

#3 04/08/2014 08:07:40

Geo-x
Membre

Re : Problème de régle d'insertion vue

Bonjour rjuju.

Pardon, j'utilise bien le NEW.
Pour ma version de Postgres, il s'agit de la 9.1. J'ai vu en effet qu'il y a bien une notion de trigger qui est arrivé avec cette version mais je ne comprend pas bien la façon de l'utiliser. Est-ce qu'il s'agit d'une utilisation comme sur une table "classique" à la seule différence qu'elle met à jour les tables appelées ?

Geo-x

Hors ligne

#4 04/08/2014 21:18:44

gleu
Administrateur

Re : Problème de régle d'insertion vue

La seule différence vient du fait qu'il s'agit d'un trigger INSTEAD OF. Vous avez un exemple sur http://docs.postgresql.fr/9.1/sql-createtrigger.html.


Guillaume.

Hors ligne

Pied de page des forums