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

InterBase Discussion :

Intérêt d'une transaction sur select plus update


Sujet :

InterBase

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2006
    Messages
    252
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 252
    Points : 138
    Points
    138
    Par défaut Intérêt d'une transaction sur select plus update
    Bonjour,

    J'utilise Interbase version 2007 sous W7 et je ne suis pas un grand spécialiste des bases de données (doux euphémisme)

    Je reprends un projet en Delphi (mais qu'importe l'outil) dans lequel, dans une transaction j'ai (en langage symbolique) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    start transaction
    select * from matable where critere
    if NbRecord > 0 // normalement 1 ou 0 puisque le critère de recherche se fait sur la clé primaire
       update matable set ... where critere
    else
       insert into matable ....
    commit (ou éventuellement rollback)
    Le niveau d'isolation de la transaction est ReadCommited.

    Est-ce que cela a vraiment un intérêt pour résoudre le problème qui m'occupe, à savoir :
    Un autre programme vient de temps en temps, et de manière totalement asynchrone, enlever des enregistrements de matable, et ceci se produit apparemment de temps en temps entre le select et le update (en cas d'insert, pas de problème).

    Je comprend bien l'intérêt d'une transaction, mais comment pourrait-elle, ne sachant pas ce que je veux faire de mon select, sauvegarder l'intégralité de l'état de la base ?

    Faut-il un niveau d'isolation plus fort ?

    SI quelqu'un a des lumières à m'apporter sur le sujet, qu'il en soit remercié d'avance.

    Kim

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 944
    Points : 123
    Points
    123
    Par défaut
    ta question c'est du x-files.

    quel autre programme , le tien , sinon comment saurait-il la structure de ta base de données,?!. Sinon, il y a les Ibevents que tu peut programmer pour signaler les changements dans ta base de données.

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 017
    Points : 40 931
    Points
    40 931
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    je ne sais pas si Interbase 2007 à le UPDATE OR INSERT de la norme SQL , si oui ce serait la solution .
    Sinon , un moyen de contournement de ce problème est de passer par une procédure
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Membre habitué
    Inscrit en
    Septembre 2006
    Messages
    252
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 252
    Points : 138
    Points
    138
    Par défaut
    Bonjour,

    Tout d'abord, merci à chekkal et SergioMaster pour leurs réponses (et la mise en forme du code).

    EN fait j'avais oublié de préciser deux choses :
    - le logiciel qui vient supprimer des enregistrements est une logiciel externe, dont je n'ai pas les sources (et la société conceptrice n'est pas très coopérative).
    - Je connais la structure de la base Interbase, mais je n'ai que le droit d'ajouter, mettre à jour et supprimer des enregistrements. Je ne peux même pas ajouter un trigger qui me renverrait des évènements.
    De toutes façons, ne pouvant faire de miracles, j'ai mis en oeuvre un contournement dont je ne suis pas vraiment fier (en reportant le problème sur la société non coopérante )...

    C'est ainsi que va la triste vie d'un développeur Delphi...

    Encore merci à tous les deux

    Kim

  5. #5
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Vous auriez en effet pu résoudre le problème en augmentant le niveau d'isolation de la transaction, afin que les données "utilisées" dans votre transaction soient vérouillées, y compris celles du SELECT...
    Je ne connais pas IB, mais le niveau "ReadWrite Table Stability" semble correspondre. A tester...

    Cependant, vous pourriez aussi faire directement votre UPDATE, et vérifier le nombre de lignes affectées. Si aucune ligne n'est affectée, alors vous faites votre INSERT. ça fera un SELECT en moins...

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

Discussions similaires

  1. désélectionner les valeurs dans une div sur select
    Par myheits dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/04/2011, 13h30
  2. une question sur Selection
    Par naty76 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/02/2009, 21h16
  3. Réponses: 6
    Dernier message: 05/03/2008, 21h53
  4. Envoi d'une image sur un serveur + update table
    Par rickways dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/06/2007, 21h15
  5. Problème de jointure sur Select et Update
    Par Marshall_Mathers dans le forum Langage SQL
    Réponses: 7
    Dernier message: 20/06/2007, 16h30

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