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 :

[C# 1.1] Comment détecter un rollback ?


Sujet :

Accès aux données

  1. #1
    Membre éclairé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Par défaut [C# 1.1] Comment détecter un rollback ?
    Bonjour,

    j'ai dans ma base SQL des triggers qui effectuent des rollbacks, et j'aimerai pouvoir détecter ces rollback dans mon code C# (pour lancer des exceptions). La base de données ne permet pas l'utilisation des "raiseerror" (c'est un serveur mutualisé). Je demande donc comment faire...

  2. #2
    Membre averti

    Inscrit en
    Novembre 2002
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 50
    Par défaut
    Grand dieu! Des triggers qui appellent des rollbacks!!! Quelle drole d'idee? As tu une bonne raison d'utiliser une telle structure???
    En principe, les transactions doivent etre geres soient par les objects soit par la base de donnees, mais pas par les 2. Peut etre que ton cas est particulier.

  3. #3
    Membre éclairé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Par défaut
    ben oui, des triggers qui font des rollback, bien sur... c'est même un des trucs essentiel, non ?

    Genre... si mon intégrité référentielle n'est pas respectée pour un insertion, je rollback ;je delete une ligne qui va deleter une autre ligne dans une autre table par cascade, qui elle-même va deleter une ligne un peu plus loin, et ben non, je n'ai pas le droit de deleter ici, finalement, alors je rollback et toutes les operations sont annulées, ce qui assure la cohérence de ma base en tout instant quelque soit les opérations que j'essaie d'effectuer dessus.

    Enfin bref, mes transactions sont gérée par ma base de donnée. Mon problème, c'est que quand il y a un rollback, je ne sais pas le détecter dans mon application, à moins de tester le résultat... Pas tres bon en termes de perfs pour la base de donnée, ça :o)

  4. #4
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2005
    Messages : 7
    Par défaut
    et tu peux pas récupérer le nombre de lignes modifiées? Si le nombre est 0, l'opération n'a pas fonctionné.

  5. #5
    Membre émérite Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Par défaut
    Citation Envoyé par Monstros Velu
    ben oui, des triggers qui font des rollback, bien sur... c'est même un des trucs essentiel, non ?

    Genre... si mon intégrité référentielle n'est pas respectée pour un insertion, je rollback ;je delete une ligne qui va deleter une autre ligne dans une autre table par cascade, qui elle-même va deleter une ligne un peu plus loin, et ben non, je n'ai pas le droit de deleter ici, finalement, alors je rollback et toutes les operations sont annulées, ce qui assure la cohérence de ma base en tout instant quelque soit les opérations que j'essaie d'effectuer dessus.

    Enfin bref, mes transactions sont gérée par ma base de donnée. Mon problème, c'est que quand il y a un rollback, je ne sais pas le détecter dans mon application, à moins de tester le résultat... Pas tres bon en termes de perfs pour la base de donnée, ça :o)

    oui mais justement pourkoi des triggers , tu parle d'une transaction et c'est a ta sql server ou autre sgbd de gerer le rollback c'est pourkoi il est existe les fichiers logs, donc pour les transactions tu ne dois toi en aucun cas intervenir c'est a ton sgbd de les gerer.

  6. #6
    Membre éclairé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Par défaut
    Ben je n'intervient pas dans la transaction. Mais mon application a besoin de savoir si l'opération s'est effectuée ou s'il y a eu rollback, quand même. Par exemple, quand l'utilisateur crée un compte, il faut bien lui dire si le compte a été créé ou pas :o)

    Le nombre de lignes modifiées devrait effectivement me donner la réponse, merci ! :o)

  7. #7
    Membre émérite Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Par défaut
    Quel rapport avec les triggers???

  8. #8
    Membre éclairé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Par défaut
    Ben ce sont les triggers qui font les rollbacks.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    create trigger TRG_TBL_INS on TBL for insert
    as
    BEGIN TRANSACTION
    if('element' in (select ELEMENT from INSERTED))
    begin
    ROLLBACK
    RETURN
    end
    /* etc... */
    COMMIT TRANSACTION
    go
    par exemple, quand mon appli fait un insert, j'en voie "insert into TBL(ELEMENT) values('element')", bah le trigger décide que j'ai pas le droit et effectue un rollback. Cet exemple est trivial, mais si le 'element' vient d'une tentative d'insertion d'un autre trigger (par cascade), la transaction prend toute son importance.

  9. #9
    Membre émérite Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Par défaut
    d'accord j'avais mal compris j'ai cru que tu te servais des triggers pour implementer les transactions.
    au temps pour moi.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2010, 22h13
  2. Réponses: 5
    Dernier message: 20/08/2002, 18h01
  3. [langage] comment créer des fichiers ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 05/05/2002, 16h33
  4. Réponses: 7
    Dernier message: 01/05/2002, 20h23

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