Vous n'êtes pas identifié(e).
Pages : 1
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
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).
Julien.
https://rjuju.github.io/
Hors ligne
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
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
Pages : 1