Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Wed 13 April 2011 15:52

xixi
Juste Inscrit !
Date d'inscription: 8 Sep 2005
Messages: 4

Mise à jour du champ de jointure d'une vue dans les deux tables mères

Bonjour à tous,

J'ai crée dans ma base PostgreSQL/PostGIS une vue (VUE_ARRETE_PT) à partir de deux tables (ARRETE_ATT, ARRETE_PT). Afin de pouvoir modifié sous QGIS les deux tables à partir de la vue, j'ai crée une règle UPDATE. La règle fonctionne bien sauf sur le champ de jointure (ID_ARRETE) de la table ARRETE_PT qui est impossible à mettre à jour.

Je vous remercie tous par avance pour votre aide.

Sript SQL de la vue VUE_ARRETE_PT :

Code:

CREATE OR REPLACE VIEW "DOMAINE_PUBLIC"."VUE_ARRETE_PT" AS 
 SELECT "ARRETE_ATT"."ID_DOSSIER", "ARRETE_ATT"."ID_ARRETE", "ARRETE_ATT"."TYPE_ARRETE", "ARRETE_ATT"."OBJET", "ARRETE_ATT"."CORRESPONDANT", "ARRETE_ATT"."LOCALISATION", "ARRETE_ATT"."DATE_ARRETE", "ARRETE_ATT"."DATE_DEBUT", "ARRETE_ATT"."DATE_FIN", "ARRETE_PT".gid, "ARRETE_PT".the_geom
   FROM "DOMAINE_PUBLIC"."ARRETE_ATT", "DOMAINE_PUBLIC"."ARRETE_PT"
  WHERE "ARRETE_ATT"."ID_ARRETE" = "ARRETE_PT"."ID_ARRETE";

Script SQL de la règle de mise à jour :

Code:

CREATE OR REPLACE RULE "VUE_ARRETE_PT_update" AS
    ON UPDATE TO "DOMAINE_PUBLIC"."VUE_ARRETE_PT" DO INSTEAD ( UPDATE "DOMAINE_PUBLIC"."ARRETE_ATT" SET "ID_DOSSIER" = new."ID_DOSSIER", "ID_ARRETE" = new."ID_ARRETE", "TYPE_ARRETE" = new."TYPE_ARRETE", "OBJET" = new."OBJET", "CORRESPONDANT" = new."CORRESPONDANT", "LOCALISATION" = new."LOCALISATION", "DATE_ARRETE" = new."DATE_ARRETE", "DATE_DEBUT" = new."DATE_DEBUT", "DATE_FIN" = new."DATE_FIN"
  WHERE "ARRETE_ATT"."ID_ARRETE" = old."ID_ARRETE";
 UPDATE "DOMAINE_PUBLIC"."ARRETE_PT" SET "ID_ARRETE" = new."ID_ARRETE", the_geom = new.the_geom
  WHERE "ARRETE_PT"."ID_ARRETE" = old."ID_ARRETE";);

Dernière modification par xixi (Wed 13 April 2011 16:01)

Hors ligne

 

Pied de page des forums

Powered by FluxBB