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 Firebird Discussion :

générateur et plantage


Sujet :

SQL Firebird

  1. #1
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 930
    Points : 1 959
    Points
    1 959
    Par défaut générateur et plantage
    Bonjour,

    Pour gérer un numéro de facture, j'utilise un générateur lié à un trigger qui va incrémenter automatiquement le numéro de facture à chaque insertion.
    Ca fonctionne parfaitement sauf que je viens de constater qu'en cas de plantage durant le commit, le générateur conserve la nouvelle valeur incrémenté ( le rollback n'annule pas son auto incrémentation ).
    Ceci est génant car risque de créer des 'trous' dans la liste des factures : numéro de facture pas utilisé si plantage.
    J'ai fait une recherche sur le forum, j'ai vu que ce fonctionnement est tout à fait normal mais je n'ai pas trouvé de solution pour éviter cette incrémentation .
    Faut il passer plutot par les procédures stockées pour faire les insertions de facture pour limiter les risques de plantage ou y a t'il une solution qui résoud ce problème ?
    Merci d'avance
    Thierry

  2. #2
    Membre actif Avatar de TMuet
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Septembre 2003
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 225
    Points : 288
    Points
    288
    Par défaut
    Non.
    Les générateurs fonctionnent hors transaction.
    Que tu sois dans une PS, un trigger ou n'importe quoi, un rollback n'empêchera pas son incrémentation.

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Février 2005
    Messages : 100
    Points : 113
    Points
    113
    Par défaut
    Bonjour,

    Ce n'est pas gênant d'avoir un trou dans la liste des numéros de facture. Par exemple, si un jour tu decides d'effacer l'enregistrement correspondant au bout de quelques années, tu auras forcément un trou) Tout dépend de l'utilisation que tu souhaites en faire. A mon avis, il est plus judicieux d'utiliser ton générateur pour l'identifiant de ta table qui devrait être différent du numéro de facture comme :

    table TFacture
    colonne Numero identifiant changé en fonction du générateur
    colonne NumeroFacture
    ...

    Sinon si tu insistes vraiment pour utiliser un champ facture incrémenté alors crée un trigger before insert :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    CREATE TRIGGER TFacture_BI0 FOR TFacture
    ACTIVE BEFORE INSERT POSITION 0
    AS
    begin
      select max(NumeroFacture) + 1 from TFacture into new.NumeroFacture;
    end
    Avec ce trigger le numéro ne devrait se mettre à jour qu'en fonction de l'insertion et non plus du générateur et normalement tu n'as plus de problème durant un plantage avec un commit.

    Ou alors ton numéro de facture pourrait même être un champs calculé.

  4. #4
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  5. #5
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 930
    Points : 1 959
    Points
    1 959
    Par défaut
    Tout d'abords merci pour ta réponse,

    Citation Envoyé par sillycoder
    Bonjour,

    Ce n'est pas gênant d'avoir un trou dans la liste des numéros de facture. Par exemple, si un jour tu decides d'effacer l'enregistrement correspondant au bout de quelques années, tu auras forcément un trou)
    Et bien, c'est trés génant, c'est meme fiscalement interdit car il y a forcément suspection de fraude et dur dur d'expliquer ceci à un controleur fiscal.
    Si l'utilisateur décide d'effacer une facture, je la mets à l'état 'invalide' mais elle reste visible.

    En ce qui concerne la solution de mettre un générateur sur l'identifiant de la table et le numéro de facture dans une colonne, je ne vois pas vraiment l'interet, cela ne fait que reporter le pb, comment fais tu pour gérer cela dans un environnement multi poste ?

  6. #6
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    il y a bcp d'encre qui a ecoulé pour ce sujet
    alors j'aime bien prposé une solution et a vrait dir une question
    a la fin de chaque journé peut on faire une mise a jour des factures pour qu'on a pas de trous???
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  7. #7
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    Citation Envoyé par edam
    il y a bcp d'encre qui a ecoulé pour ce sujet
    alors j'aime bien prposé une solution et a vrait dir une question
    a la fin de chaque journé peut on faire une mise a jour des factures pour qu'on a pas de trous???
    oui bien sûr, je le répète le bon doc de référence pour cela avec exemple et explications est là :
    http://www.ibobjects.com/docs/ti_AuditableSeries.ZIP
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  8. #8
    Membre expert

    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2004
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 123
    Points : 3 256
    Points
    3 256
    Par défaut
    Salut,

    Ce tutoriel ne pourrait pas vous aider ?
    http://octobinz.developpez.com/artic...e/generateurs/
    CV :
    - LinkedIn
    - Viadeo

  9. #9
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    Citation Envoyé par edam
    j'aime bien prposé une solution et a vrait dir une question
    a la fin de chaque journé peut on faire une mise a jour des factures pour qu'on a pas de trous???
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  10. #10
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    et ! lis les réponses que l'on t'a donné, ton pb est résolu
    bien sûr que l'on peut
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  11. #11
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 930
    Points : 1 959
    Points
    1 959
    Par défaut
    Citation Envoyé par makowski
    et ! lis les réponses que l'on t'a donné, ton pb est résolu
    Désolé, j'ai été absent ces derniers jours, merci pour ton lien, il est trés interessant, j'ai jeté un coup d'oeil, il va me falloir du temps pour analyser cela car je n'ai pas delphi, seulement builder, en plus l'exemple a l'air d'utiliser des composants que je n'ai pas.
    Et pour couronner le tout, je n'ai jamais fait de procédures stockés, je ne comprends pas celles qui sont écrites.
    Bref, tu l'aura compris, cela va me prendre pas mal de temps pour comprendre ce qui doit être fait.
    Je peux te solliciter à nouveau plus tard, si je comprends pas certaines choses ?

  12. #12
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 930
    Points : 1 959
    Points
    1 959
    Par défaut
    Citation Envoyé par edam
    il y a bcp d'encre qui a ecoulé pour ce sujet
    alors j'aime bien prposé une solution et a vrait dir une question
    a la fin de chaque journé peut on faire une mise a jour des factures pour qu'on a pas de trous???
    Je ne pense pas que cela soit une bonne solution, les factures sont pour la plupart imprimées et données aux clients, il est donc pas concevable de changer son numéro ensuite. Dans ce cas là, il n'y aura plus aucune correspondance de numéro de facture entre celles données aux clients et celles de la BD.

Discussions similaires

  1. Générateur de doc
    Par chman dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 09/09/2003, 20h37
  2. Plantage de Delphi 7
    Par Andry dans le forum EDI
    Réponses: 3
    Dernier message: 04/09/2003, 16h36
  3. Réponses: 7
    Dernier message: 20/08/2003, 10h33
  4. plantage a la deconnexion du client
    Par travail dans le forum 4D
    Réponses: 3
    Dernier message: 05/06/2003, 13h39
  5. [Kylix] Plantage IDE Kylix3/Mandrake 9.0
    Par OmicroN dans le forum EDI
    Réponses: 3
    Dernier message: 28/01/2003, 23h04

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