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 Tue 08 December 2015 14:21

ron22
Participant occasionnel
Lieu: Brest
Date d'inscription: 22 May 2008
Messages: 33

Gestion conditionelle dans un ALTER TABLE - POSTGRES

Bonjour,
Je réalisé un tratement FME afin d'intégrer régulièrement les données de mon délégataire AEP - EU dans une base relationelle POSTGIS.
Avant le traitement j'utilise une requête SQL pour supprimer les clefs etrangères (sinon mon traitement passe pas car pas possible de ), c'est de type :
ALTER TABLE gbd_data.aep_branch
  DROP CONSTRAINT "FK__aep_branch__commune" ;

Puis j'ajoute les contraintes via une nouvelle requête de type :
ALTER TABLE gbd_data.aep_branch
  ADD CONSTRAINT "FK__aep_branch__commune" FOREIGN KEY (id_commune)
      REFERENCES gbd_data.c_insee (code) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION;

J'ai beucoup de contraintes à gérer et mon appli étant en construction, il m'arrive encore d'ajouter / supprimer des contraintes de clef étrangère. 
Cependant, j'ai un message d'erreur si je souhaite supprimer une contrainte qui n'existe pas. J'ai bien des solutions de contournement mais j'aimerais que mon traitement continue même s'il rencontre une erreur lors de la suppression d'une contrainte, je vois 2 solutions :
- forcer le traitement à s'exécuter jusqu'au bout même s'il rencontre une erreur sur un ALTER TABLE
- ajouter une conditionnelle qui dirait : si tel clef etragère existe, alors tu la supprime....
Je n'arrive à faire ni l'un ni l'autre : Quelqu'un a t'il déjà rencontré ce problème?
Merci

Ronan


Ronan Jarno
Shom - Brest

Hors ligne

 

#2 Tue 08 December 2015 14:50

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: Gestion conditionelle dans un ALTER TABLE - POSTGRES

Bonjour,

La clause if exists est supportée par alter table:
alter table .... DROP CONSTRAINT IF EXISTS ....

Nicolas

Hors ligne

 

#3 Tue 08 December 2015 18:03

ron22
Participant occasionnel
Lieu: Brest
Date d'inscription: 22 May 2008
Messages: 33

Re: Gestion conditionelle dans un ALTER TABLE - POSTGRES

Bonjour,

merci pour la réponse, cela règle mon problème

Bonne soirée


Ronan Jarno
Shom - Brest

Hors ligne

 

Pied de page des forums

Powered by FluxBB