PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

Synchro de fonctions embarquées

Technique - général | Synchro de fonctions embarquées

Par rfufu le 21/12/2006 - 14:48

Bonjour,

Voilà, je souhaite pouvoir mettre à jour les fonctions pl/pgsql, les fonctions triggers et les types de tous les shémas d'une base à partir d'une autre base et ce sans toucher ni à la structure, ni au contenu de mes tables. J'ai passé pas mal de temps à chercher une solution, mais sans réponse.

Donc en gros je voudrais pouvoir générer un fichier SQL de la forme :

DROP FUNCTION shema1.fonction1(...);
DROP FUNCTION shema1.fonction2(...);
DROP FUNCTION shema2.fonction1(...);
DROP FUNCTION shema2.fonction2(...);
DROP TRIGGER shema1.fonction1(...);
DROP TRIGGER shema1.fonction2(...);
DROP TRIGGER shema2.fonction1(...);
DROP TRIGGER shema2.fonction2(...);
DROP TYPE shema1.type1
...

CREATE FUNCION fonction1... etc...

Donc si vous avez une solution qui s'applique en SQL, ou coté système avec des lignes de commande (sous UNIX), ça m'intéresserait beaucoup.
Merci beaucoup par avance.

Options d'affichage des commentaires

Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder les paramètres" pour activer vos changements.

create or replace?

Jean-Paul Argudo/ = 22 DĂ©cembre, 2006 - 09:53

Bonjour,

Pourquoi vouloir dropper ces objets pour les re-créer ensuite, quant il vous suffit de mettre CREATE OR REPLACE à la place de vos CREATE? Certes cela ne marche pas pour tous les objets (les fonctions, vues et rule, de mémoire), mais ça ne vous suffira pas?

Je me demande en effet quel intérêt vous pouvez avoir à dropper un trigger pour le recréer quand on sait qu'un trigger ne fait qu'appeler une fonction retournant un trigger?

Enfin, je suppose que vous connaissez les schémas sur lesquels vous opérez: vous devez donc avoir la liste exhaustive de ce qu'ils contiennent, non?

Si ce n'est pas le cas, quelques requêtes sur les tables systèmes vous permettront de construire vos scripts de manière dynamique. Probablement avec une petite routine en plpgsql (voir la doc sur les catalogues système).

En espérant que ma réponse vous convienne,
--
Jean-Paul ARGUDO
http://dalibo.com | http://dalibo.org


Bonjour, Tous d'abord, merci

rfufu/ = 22 DĂ©cembre, 2006 - 13:59

Bonjour,
Tous d'abord, merci beaucoup pour votre réponse, et pardonnez mon ignorance en matière de base de données (je ne suis pas dba, mais plutôt orienté système).
Je me suis rendu compte après coup que les triggers étais des fonctions particulieres, mais j'avais fais une distinction à cause de pgadmin qui les affiche de façon séparée.
J'ai donc écris quelques requêtes sql pour interroger les tables systèmes et ainsi pouvoir récurérer les fonctions puis les réinjecter avec des CREATE OR REPLACE comme vous me l'avez conseillé.

Maintenant je me pose quelques questions sur les types, mais je devrais pouvoir me débrouiller.


© PostgreSQLFr, tous droits rĂ©servĂ©s.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.