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

Pour sécuriser votre compte sur les forums du GeoRezo, nous demandons de changer votre mot de passe.

Vous allez recevoir un message pour effectuer ce changement de mot de passe.

Merci de bien respecter les règles préconisées.

#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