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 :

UPDATE et point de sauvegarde [9.2]


Sujet :

Requêtes PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 191
    Par défaut UPDATE et point de sauvegarde
    Bonjour,

    Je suis amené à mettre à jour (update) beaucoup de lignes par transaction.
    J'éprouvais le besoin d'avoir un aperçu du résultat de la transaction afin de m'assurer que j'obtenais bien le résultat attendu avant de valider.
    Je me suis donc tourné vers les points de sauvegarde dont le peu que je connaissais me laissait supposer la chose possible.
    Si effectivement on peut revenir à un état antérieur (rollback) grâce au savepoint, n'y a-t-il pas moyen de visualiser le (pré)resultat, s'arrêter, regarder et décider de lancer le rollback ou pas ?
    comme une sorte de ctrl+z ...
    car ce que je vois est qu'un rollback renvoie à un état sans pour autant permettre de voir d'où l on revient (sauf erreur de ma part).
    A moins que cela ne soit pas avec ces opérateurs ?
    D'avance merci pour vos conseils,

  2. #2
    Membre Expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Billets dans le blog
    8
    Par défaut
    Salut
    Par quelle interface vous lancez les commandes de transactions?
    @+

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 191
    Par défaut
    la derniere version de pgadmin3.

  4. #4
    Membre Expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Billets dans le blog
    8
    Par défaut
    Salut
    Avec pgadmin III le mieux serait de le faire par pgscript.
    Sinon tu peux utiliser un langage évolué (java avec jdbc, .NET ou ACCESS avec ADO ...) pour lancer des commandes BEGIN, SAVEPOINT, ROLLBACK, COMMIT... avec condition (même principe qu'avec pgscript).
    @+

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 191
    Par défaut
    merci.
    Je vais regarder du coté de pgscript donc.

  6. #6
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    Citation Envoyé par Leehan Voir le message
    Je suis amené à mettre à jour (update) beaucoup de lignes par transaction.
    J'éprouvais le besoin d'avoir un aperçu du résultat de la transaction afin de m'assurer que j'obtenais bien le résultat attendu avant de valider.
    Je ne suis pas sûr de bien comprendre.
    Tout d'abord j'ai l'impression que cet update est du one shot.

    Quand vous démarrez une transaction les données modifiées sont accessibles (lisibles) par la session qui a modifié les données.
    Il n'est pas nécessaire de valider les données pour voir les modifications, par contre si vous souhaitez voir les données avant modification pour faire une comparaison visuel, il faudra ouvrir une autre session avant le commit/rollback de la 1ere.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    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
    test=# select * from t;
     c
    ---
     1
    (1 ligne)
     
     
    test=# begin transaction isolation level read committed;
    BEGIN
    test=# update t set c = 2;
    UPDATE 1
    test=# select * from t;
     c
    ---
     2
    (1 ligne)
     
     
    test=# rollback;
    ROLLBACK
    test=# select * from t;
     c
    ---
     1
    (1 ligne)
     
     
    test=#

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 191
    Par défaut
    Citation Envoyé par skuatamad Voir le message
    Je ne suis pas sûr de bien comprendre.
    Tout d'abord j'ai l'impression que cet update est du one shot.
    [/code]
    absolument

    d'ou ma volonté de "controler" le resultat avant de "valider".

    ma question plus simplement est de savoir si et alors comment on peut revenir en arriere après une transaction si elle ne correspond pas au resultat desiré.

    merci pour le code : je regarde asap.

    edit : tu executes ton code avec psql (?), je peux le faire egalement. Ca me fer juste aller et venir entre psql et pgadmin3 que j'utilise plus souvent.

  8. #8
    Membre Expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Billets dans le blog
    8
    Par défaut
    Salut
    skuatamad
    Cette technique est aussi possible avec pgadmin.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    begin transaction;
    INSERT ...|DELETE ...|UPDATE ...;
    SELECT...;
    rollback;
    commit;
    Il suffit de sélectionner et exécuter commande par commande.
    Mais je préfère lancer le tout dans un seul code, parce que une transaction (par principe) ne doit pas attendre une intervention utilisateur.
    @+

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 191
    Par défaut
    selectionner et executer commande par commande ?
    tiens...me semblait avoir essayé auparavant et sans succés

    je vais (re)tester...
    merci

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 191
    Par défaut
    re

    psql :
    je lance :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    update "Activite"."Ouvertures" 
       set geom = ST_Transform(st_setsrid(geom, 27572),2154)
    where gidoperef = 21 ;
    message d'erreur : la transaction est annulée, les commandes sont ignorées jusqu'à la fin du bloc de la transaction.
    Ce message parait frequent mais d'après mes lectures les solutions sont diverses et variées et surtout compliquées pour moi

    pgadmin3 : je ne sais pas lancer commande par commande au sein d'une transaction comme le suggere alassanediakite

    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/04/2007, 11h29
  2. Point d'interrogation dans UPDATE
    Par the_bmo dans le forum MySQL
    Réponses: 1
    Dernier message: 18/10/2006, 11h58
  3. sauvegarde live update
    Par remi77 dans le forum Windows XP
    Réponses: 2
    Dernier message: 12/10/2006, 06h41
  4. Utilisation des point de sauvegarde (SAVEPOINT)
    Par sto dans le forum Bases de données
    Réponses: 3
    Dernier message: 20/01/2005, 18h35
  5. possible de sauvegarder ses points d'arrêts ?
    Par Merfolk dans le forum C++Builder
    Réponses: 2
    Dernier message: 14/09/2004, 11h23

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