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

Accès aux données Discussion :

[ASP.Net/SqlServer/Transaction] Commit ou pas ?


Sujet :

Accès aux données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 32
    Points : 24
    Points
    24
    Par défaut [ASP.Net/SqlServer/Transaction] Commit ou pas ?
    Bonjour,
    je travaille sur un site internet et une base de sonnées sqlserver 2000.
    Je fais un traitement qui, s'il est ok, se termine par une maj de table.
    Je fais ce traitement en boucle.

    En cas de plantage dans la boucle, les maj de table précédantes seront-elles définitives ou dois-je faire un commit aprés chaque maj ?
    Et dans le cas du plantage, le rollback de la dernière maj doit-il être fait ou bien il est fait automatiquement ? En gros est-ce implicite ?

    Je vous remercie de vos réponses.
    totoche

  2. #2
    Membre expert

    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    1 581
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 581
    Points : 3 016
    Points
    3 016
    Par défaut
    Une transaction est atomique, ce qui signifie que tous les ordres SQL qui y sont inclus seront soit validés (par un COMMIT), soit annulés par un ROLLBACK.

    Si tu as une boucle, à mon sens, la meilleure manière de procéder c'est comme ceci (en pseudo code):

    ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    start transaction
    try
    {
      while condition
     {
       executesql("ORDRE DML");
     }
     COMMIT (en dehors de la boucle)
    }
    catch(sqlexception)
    {
     ROLLBACK()
    }

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 32
    Points : 24
    Points
    24
    Par défaut Merci stephane
    si je comprends bien, je fais le commit en fin de boucle, cad que l'ensemble des maj seront validées soir un rollback dans l'exception et toutes les maj seront annulées et je retrouve l'état de la base avant le trt qui a planté.

    Merci de ton conseil
    totoche

  4. #4
    Membre expert

    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    1 581
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 581
    Points : 3 016
    Points
    3 016
    Par défaut
    Citation Envoyé par totoche9
    si je comprends bien, je fais le commit en fin de boucle, cad que l'ensemble des maj seront validées soir un rollback dans l'exception et toutes les maj seront annulées et je retrouve l'état de la base avant le trt qui a planté.

    Merci de ton conseil
    totoche
    Tu as en effet bien compris (tagge le post résolu si t'es satisfait)

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

Discussions similaires

  1. [ASP.NET] Les includes ne sont pas autorisés ?
    Par Titi41 dans le forum SharePoint
    Réponses: 0
    Dernier message: 21/05/2008, 13h06
  2. excel asp.net sqlserver
    Par sarra0 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 08/02/2008, 17h00
  3. [ASP.NET C#] Redirect qui marche pas
    Par vin100H dans le forum ASP.NET
    Réponses: 11
    Dernier message: 10/08/2007, 20h54
  4. [Oracle/ASP.Net] Pourquoi je n'arrive pas à charger oci.dll ?
    Par zakaria_jd dans le forum Accès aux données
    Réponses: 1
    Dernier message: 01/08/2006, 12h25
  5. [C#/ASP.Net] Pourquoi "ConnectionString n'a pas été initialisée" ?
    Par Louisa dans le forum Accès aux données
    Réponses: 5
    Dernier message: 21/07/2006, 10h31

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