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 :

Validation conditionnelle d'une transaction


Sujet :

Requêtes PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de flotho
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Novembre 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Novembre 2006
    Messages : 156
    Par défaut Validation conditionnelle d'une transaction
    Bonjour,

    Quel est le moyen pour gérer les commit et rollback conditionnels dans une transaction?
    La doc https://postgresql.developpez.com/do...tion/francais/ indique commentt on fait un rollback to savepoint mais ne précise pas comment accéder à la condition de retour au point de sauvegarde.

    Merci de votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    Bonjour,

    mais ne précise pas comment accéder à la condition de retour au point de sauvegarde.
    J'avoue avoir du mal à comprendre ce que vous voullez dire avec ce bout de phrase.

  3. #3
    Membre confirmé Avatar de flotho
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Novembre 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Novembre 2006
    Messages : 156
    Par défaut
    Pardon, je précise.

    Sur l'exemple bancaire, on peut considérer qu'un rollback est nécessaire SI le solde après MAJ est négatif par exemple.
    Dans ce cas là on reviendrait au point de sauvegarde ou on ferait un rollback complet.
    Ma question est donc : comment gérer le SI dans une transaction

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    Dans une même transaction vous pouvez executer plusieurs requête différente, donc un simple "if", une erreur quelconque, et vous faites votre rollback to savepoint.


    Dans quel cadre voullez-vous utiliser les savepoints ?

  5. #5
    Membre confirmé Avatar de flotho
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Novembre 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Novembre 2006
    Messages : 156
    Par défaut
    Bonjour,

    Merci pour la réponse.
    Je n'ai pas réussi à faire de IF en language SQL. En plpgsql pas de souci.
    Auriez vous un exemple?

    Pour les savepoints, on peut considérer des opérations par paires de débit crédit. Si une paire ne passe pas, je reviens au précédent savepoint.

    A bientôt,

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    ah,

    Je ne penses pas que ce soit possible dans une fonction sql ou pl/pgsql.

    PostGresql ne gère pas les transactions imbriqués (au sein d'une fonction sql / plpgsql) donc il ne vous ai pas possible de gérer les commit rollback dans une même fonction.


    la seule façon que j'ai trouvé pour "contourner" ceci, c'est de gérer avec des bloque begin / exception.

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    create table tb1 (val integer primary key);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    do $$
     begin
      insert into tb1 values (1);
      begin
       insert into tb1 values (1);
      exception when others then
       null;
      end;
    end $$;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select * from tb1;
     
    val
    --------------
    1

    Une personne plus expérimentée me contredira peut-être, mais au vu de mes recherches j'ai pas trouvé mieux.

Discussions similaires

  1. Exception de connexion fermé apres une transaction validé
    Par javalhoussain dans le forum ASP.NET
    Réponses: 0
    Dernier message: 06/05/2011, 21h52
  2. Validation d'une transaction
    Par MistyMan dans le forum Débuter
    Réponses: 4
    Dernier message: 29/09/2009, 16h27
  3. Réponses: 1
    Dernier message: 05/06/2008, 15h04
  4. Peut-on faire une validation conditionnelle ?
    Par chriscoolletoubibe dans le forum Struts 2
    Réponses: 2
    Dernier message: 06/09/2007, 08h22
  5. Réponses: 2
    Dernier message: 22/11/2005, 14h06

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