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

DB2 Discussion :

Transactions en DB2 ?


Sujet :

DB2

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Par défaut Transactions en DB2 ?
    Bonjour à tous !

    Je recherche désespérément de l'aide afin de comprendre comment fonctionnent les transactions avec DB2 dans un script.
    Si cela ne me pose pas de soucis avec PostgreSQL, MariaDB ou MsSQL, je dois avouer que je suis totalement perdu en DB2.

    J'ai tenté ce genre de chose :
    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
     
    SAVEPOINT before_updates ON ROLLBACK RETAIN CURSORS;
     
    UPDATE table_xxxxx
    SET column1 = column1 - 100
    WHERE column2 = 'ABC';
     
    IF SQLCODE <> 0 THEN
        ROLLBACK TO SAVEPOINT before_updates;
    ELSE
        UPDATE table_xxxxx
        SET column1 = column1 + 100
        WHERE column2 = 'ABC';
     
        IF SQLCODE <> 0 THEN
            ROLLBACK TO SAVEPOINT before_updates;
        END
    END
     
    COMMIT;
    Mais pour ce cas, j'ai un message d'erreur SQL 42601: SQL0199 (le mot clé IF est mal placé...)

    Je n'ai pas non plus compris comment désactiver l'auto-commit (ni comment savoir s'il est actif), ou s'il est obligatoire de passer par une procédure stockée...
    Bref, je suis au niveau zéro de la connaissance en DB2 et je ne serais pas contre un peu d'aide.

    Merci !


    Environnement : DB2 AS400/iAccess V7R1 ou V7R2... je suis pas certains...
    Pas d'accès à la console. Exécution des requêtes via DBeaver.

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    Novembre 2012
    Messages
    1 776
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'Etude Mainframe/AS400
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1 776
    Par défaut
    Bonjour, effectivement il faut passer par une procédure stockée pour passer l'enchaînement "d'ordres".

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Par défaut
    1. Euh... il est nécessaire de faire autant de procédures que j'ai de transaction différentes ?
    2. Il y a moyen de le faire avec un script ? (1.création de la procédure 2.exécution 3.suppression de la procédure)
    3. Au final, quelle est la bonne pratique pour exécuter 2 requêtes (ou plus) nécessitant une transaction, est qui ne sera utilisé qu'une seule fois ?

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    Novembre 2012
    Messages
    1 776
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'Etude Mainframe/AS400
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1 776
    Par défaut
    En fait qu'entends-tu par transaction ? Sous quelle forme tu as un écran qui invoque ces ordres DB2 ?

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Par défaut
    Par transaction, je veux dire une suite de requêtes qui dépendent les unes des autres et qui seront validées (COMMIT) uniquement si tout se passe bien, sinon l'ensemble des requêtes est annulé (ROLLBACK)

    Concernant "l'écran", je passe par DBeaver pour l'exécution des requêtes.
    Je viens de voir que j'ai aussi accès au "terminal" (interface en mode texte).

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    Novembre 2012
    Messages
    1 776
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'Etude Mainframe/AS400
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1 776
    Par défaut
    Tu es donc obligé de passer par procédure stockée ou programme qui contient l'enchaînement des ordres.

Discussions similaires

  1. Db2 10.5 linux ( centos 7) XA transaction manager?
    Par thibaultG dans le forum DB2
    Réponses: 0
    Dernier message: 17/01/2017, 11h40
  2. Réponses: 4
    Dernier message: 19/10/2011, 03h10
  3. Transaction DB2 avec 2 instructions en VB.NET
    Par asmduty dans le forum DB2
    Réponses: 9
    Dernier message: 16/04/2011, 22h24
  4. Apropos des Transactions au sein d'un Stored Procedure
    Par Sarbacane dans le forum Connexion aux bases de données
    Réponses: 6
    Dernier message: 16/11/2004, 08h21
  5. [DB2] Au sujet de...
    Par Eric Denné dans le forum DB2
    Réponses: 2
    Dernier message: 16/09/2002, 19h21

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