IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes PostgreSQL Discussion :

Copie de tables dans un nouveau schéma dès qu'un champ est mis à jour


Sujet :

Requêtes PostgreSQL

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2017
    Messages : 9
    Points : 5
    Points
    5
    Par défaut Copie de tables dans un nouveau schéma dès qu'un champ est mis à jour
    Bonjour,

    J'ouvre encore une nouvelle discussion, mais vous me permettez d'avancer petit à petit en utilisant des solutions souvent plus simples que je n'aurais pensé. Bref!
    J'ai pour chacune de mes tables dans différents schémas une colonne "num_version", de type integer. J'aimerais que si la colonne "num_version" est mise à jour, les tables soient copiées dans un schéma.
    Il y aurait alors deux solutions :
    -soit il est possible de récupérer la valeur de la colonne "num_version" et de l'ajouter à la fin du nom de la table nouvellement créée
    -soit les tables sont déjà créées dans le schéma et dans ce cas, il faut copier les données dans la bonne table correspondant à la bonne valeur de la colonne "num_version"

    Est-ce possible avec un trigger? Finalement la problématique est surtout liée au fait de pouvoir créer une table reprenant automatiquement le numéro de version.

    Merci

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Ce n'est pas clair pour moi
    Citation Envoyé par lauriane88 Voir le message
    J'ai pour chacune de mes tables dans différents schémas une colonne "num_version", de type integer. J'aimerais que si la colonne "num_version" est mise à jour, les tables soient copiées dans un schéma.
    Vous parlez d'une mise à jour de la valeur de cette colonne pour une ou plusieurs lignes ou alors d'une modification de la structure de la colonne (type, longueur....)dans la table ?
    En d'autres termes faut il faire la recopie lors d'une opération de DML ou de DDL ?
    Dans le 1er cas, faut il créer autant de tables que de lignes modifiées ? Ca ferait beaucoup de tables

    Citation Envoyé par lauriane88 Voir le message
    soit il est possible de récupérer la valeur de la colonne "num_version" et de l'ajouter à la fin du nom de la table nouvellement créée
    -soit les tables sont déjà créées dans le schéma et dans ce cas, il faut copier les données dans la bonne table correspondant à la bonne valeur de la colonne "num_version"
    Cette solution impliquerait, à chaque fois que vous aurez une nouvelle table
    - de modifier toutes les requêtes qui utilisent cette table
    - ou de créer une vue ou un alias pour prendre en compte cette table
    - ou d'utiliser du SQL dynamique et passer en variable le suffixe du nom de table
    Bref l'usine à gaz, pour quel intérêt ?

    Repartons du début, quel est le besoin fonctionnel ?

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2017
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Merci pour votre réponse. En effet, ce ne doit pas être très clair donc je vais essayer d’expliciter le besoin fonctionnel : j’ai des tables portant le préfixe out_ qui correspondent aux tables de sorties de workflows, prêtes à être exploitées. Néanmoins, avant que ces tables soient considérées comme les tables finales, beaucoup de modifications sont faites dedans (insert, update).

    Cela suppose donc qu’il y ait des versions intermédiaires. Par exemple, mon utilisateur A lance un workflow ce qui met à jour la donnée out_, on serait donc à la version 1. Il se rend compte qu’il doit changer certains paramètres dans son workflow, il le relance, ce qui met à jour la donnée out_, et on passe à la version 2, etc. Le souci c’est que si mon utilisateur A se rend compte que la version 2 donne un résultat moins optimal que la version 1, il doit être en mesure de récupérer le résultat de la version 1.

    Mon idée, peut-être trop compliquée, est de mettre toutes ces données intermédiaires dans un seul schéma. Et du coup je parlais de la mise à jour de la valeur de la colonne « num_version ». Dès que mon utilisateur A lance cette requête : UPDATE <table_name> SET num_version = <expression> (ce serait le même numéro de version pour toutes les lignes de la table donc il faudrait créer une table correspondant au numéro de version, par exemple table_version1, table_version2) ; une table se créerait dans le schéma « données intermédiaires » avec toutes les colonnes, et toutes les lignes de la table out_ venant d’être mise à jour, et portant le numéro de la version.

    Le but étant qu’on se retrouve avec une table pour chaque numéro de version, et que chaque semaine, toutes les données contenues dans le schéma « données intermédiaires » soit supprimée pour éviter de se retrouver avec plein de tables.

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Pourquoi ne pas laisser toutes les versions dans la même table.
    Vous pouvez éventuellement utiliser des vues pour simplifier l'utilisation (par exemple, une vue qui ne sortirait que la dernière version)

Discussions similaires

  1. [Toutes versions] Copie plusieurs feuilles dans un nouveau Workbook
    Par seba_stien dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/02/2010, 14h24
  2. copie de selection dans un nouveau fichier en conservant les sauts de page
    Par SpaceFrog dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 10/09/2008, 15h39
  3. Copies de feuilles dans un nouveau classeur
    Par malkkom dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/09/2007, 10h45
  4. Copie de cellules dans un nouveau document
    Par coco21 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/07/2007, 23h07
  5. [9i]Copie de table dans un autre schéma.
    Par sali dans le forum Oracle
    Réponses: 5
    Dernier message: 10/02/2006, 07h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo