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

SQL Procédural MySQL Discussion :

procédures stockées et transactions


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Par défaut procédures stockées et transactions
    Bonsoir
    Voila je travail avec MySQL 5.0 je suis sous Delphi 7 et j’utilise ADO et j’aimerais bien utiliser des Procédures Stockées, et comme c’est la première fois pour moi que je v utiliser ce concept je me demande si une procédure stockée est Atomique ? Par exemple si cette procédure effectue des modifications sur plusieurs Tables es qu’elle sera exécutée en 1 seule bloque ou bien il faut Toujours utiliser les transactions ?

    Ca c’est ma 1ere question la deuxième c’est de vous demander ou peut-on trouver un bon Tuto sur les procédures stockées (syntaxe, ext…) de préférence pour MySQL ou bien En SQL norme 2003 vus que ya pas grand-chose qui filtres sur ce point pour MySQL g l’impression que c’est Comme si c’était encor trop nouveau pour en parler .
    Merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 287
    Par défaut
    Citation Envoyé par toubal_99
    et j’aimerais bien utiliser des Procédures Stockées, et comme c’est la première fois pour moi que je v utiliser ce concept je me demande si une procédure stockée est Atomique ?
    les proc stock ne sont pas particulièrement atomiques ; elles le deviennent si elles contiennent des transactions, ou sont contenues dans des transactions.

    Citation Envoyé par toubal_99
    Ca c’est ma 1ere question la deuxième c’est de vous demander ou peut-on trouver un bon Tuto sur les procédures stockées
    Il existe d'excellents livres sur la question

  3. #3
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Par défaut
    les proc stock ne sont pas particulièrement atomiques ; elles le deviennent si elles contiennent des transactions, ou sont contenues dans des transactions.
    ca srais bien si vous pouvais me doner un exemple de PS qui contient une transaction, la syntaxe et comment gerer le Comit et le Rolback dans une PS
    merci

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 287
    Par défaut
    Bah, il n'y a pas de syntaxe particulière aux procstocks. Voici un exemple avec deux gestionnaires d'erreur provoquant un ROLLBACK (il s'agit du retour d'un livre à une bibliothèque de prêt) :

    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
    CREATE PROCEDURE RetourLivre(IN paramIDlivre SMALLINT UNSIGNED, 
      OUT paramAmende DECIMAL(5,2) UNSIGNED)
    BEGIN
    DECLARE varIDlecteur SMALLINT UNSIGNED ;
    DECLARE varRetourPrevuLe DATE ;
    DECLARE EXIT HANDLER FOR 1329 -- warning pas de donnée trouvée 
      BEGIN 
        SELECT 'Ce n''est pas un livre en prêt.' AS Erreur ;
        ROLLBACK ;
      END ;
    DECLARE EXIT HANDLER FOR 1172 -- erreur SELECT de plus d'une ligne
      BEGIN 
        SELECT 'Ce livre est prêté en double, corrigez et ré-essayez.' AS Erreur ;
        ROLLBACK ;
      END ;
    
    START TRANSACTION ;
    SELECT IDlecteur, RetourPrevuLe INTO varIDlecteur, varRetourPrevuLe
      FROM Prets
      WHERE IDlivre = paramIDlivre AND RetourEffectif IS NULL 
      FOR UPDATE ; -- réservation pour la saisie du retour
    -- étape 1, l'amende
    ...
    -- étape 2, le retour
    ...
    COMMIT ;
    END ;
    Un danger se cache derrière l'utilisation de cette procédure avec une transaction ; en effet, la procédure stockée n'utilise pas un flux transactionnel différent, mais bien celui de l'utilisateur. Autrement dit, si l'utilisateur avait commencé une transaction, celle-ci sera implicitement validée par le Start Transaction en début de procédure.

    Ce problème n'a pas de vraie solution ; on considère généralement que le client ou l'utilisateur ne doit pas appeler, lors d'une transaction, des procédures stockées dont il ne connaît pas les effets.

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

Discussions similaires

  1. Procédure stockée avec transaction
    Par mattrixx dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 06/02/2011, 12h28
  2. Procédures stockées et transactions
    Par toubal_99 dans le forum Bases de données
    Réponses: 1
    Dernier message: 28/01/2007, 18h37
  3. Réponses: 2
    Dernier message: 20/03/2006, 09h39
  4. Procédure stockée et 'rollback transaction'
    Par thomas_strass dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 01/02/2006, 14h44
  5. Transaction et Procédures stockées
    Par Tchinkatchuk dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 26/06/2005, 19h48

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