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

Bases de données Delphi Discussion :

[Trigger] comment savoir que la bd a ete modifiee


Sujet :

Bases de données Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 45
    Points : 31
    Points
    31
    Par défaut [Trigger] comment savoir que la bd a ete modifiee
    Mon probleme est le suivant : mon programme accede a des données sur une BD, qui peut etre modifiée par un autre programme. Ce que j'aimerais c'est que mon programme soit prevenu qu'il y a eu un changement (je me fous de savoir ce qui a changé). Mais je suis debutant en base de données, et je n'ai aucune idée sur la facon de proceder. j'ai entendu parler de triggers, mais je n'ai aucune idee de la facon dont il peuvent causer a mon programme.

  2. #2
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2004
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Question: la notification d'un changement doit parvenir au programme à quel moment?
    Généralement, Lorsque l'appl est en phase de consolidation, le serveur BD signale tout changement dès qu'une commande DML entre en conflie avec une autre transaction.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 45
    Points : 31
    Points
    31
    Par défaut
    Question: la notification d'un changement doit parvenir au programme à quel moment?
    Après que les modifs aient ete effectuées.

    Généralement, Lorsque l'appl est en phase de consolidation, le serveur BD signale tout changement dès qu'une commande DML entre en conflie avec une autre transaction.
    J'ai rien compris... Ce que je souhaite c'est que mon programme delphi soit "averti" qu'il y a eu un changement. Comme je l'ai dit avant, les bd c'est pas mon truc. Je fais les requetes dont j'ai besoin, et basta, apres je connais pas grand chose...

    Ah, au fait, je travaille sur sql server 2000, au cas ou...

  4. #4
    Membre éprouvé Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 840
    Points : 980
    Points
    980
    Par défaut
    Si, moi j'ai comprendé.
    Lorsque, l'utilisateur valide ses modifications dans la base, le programme appelle la méthode BeginTrans de l'ensemble de données pour initier une transaction sur la base.
    Dans le cas d'un conflit de mise à jour, la BD signale une erreur de mise à jour. Le programme est alors avertido del probléma.
    Diviser c'est régner : United we stand, Divided we fall
    .

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 45
    Points : 31
    Points
    31
    Par défaut
    Dans le cas d'un conflit de mise à jour, la BD signale une erreur de mise à jour. Le programme est alors avertido del probléma.
    Je crois bien que je me suis mal fait comprendre. Alors je reprends a 0.
    J'ai une BD sur SQL Server 2000. Cette BD peut etre manipulée par 2 programmes, le mien et un autre. Ce que je souhaite, c'est que lorsque l'autre programme fait des changements dans la bd, mon programme en soit averti a la fin des changements, pour pouvoir mettre a jour les données affichées à l'utilisateur.

    En fait j'utilise ADO por acceder a ma base, et j'aimerais savoir si il y a un moyen que le server me previenne des changments. J'imagine que ce doit etre possible, vu que je suis constamment connecte a la base, mais je ne sais pas comment faire....

  6. #6
    Membre éprouvé Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 840
    Points : 980
    Points
    980
    Par défaut
    Bon, je ne peut pas faire plus clair mais ce n'est pas grave.
    Sachant:
    mon programme en soit averti a la fin des changements
    Une solution serait
    d'une part, que le programme qui effectue des changements consigne dans un journal des modifications (fichier sur disque ou table de BD) chaque modification,
    d'autre part, que ton programme contienne un timer qui scruterait à intervalle régulier ce journal pour détecter toutes modifications qui concernerait les enregistrements affichés.
    Et là est-ce mieux...
    Diviser c'est régner : United we stand, Divided we fall
    .

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 45
    Points : 31
    Points
    31
    Par défaut
    Le timer, c'etait ma premiere idée, mais quand j'ai reflechi aux implications, du genre ralentissement de mon appli dus aux acces a la base, alors que c'est inutile, car le timer ne peut pas etre regler avec un intervalle depassant les 5 secondes...
    J'esperais, vu que je suis connecte a la base constamment, que je puisse etre averti par un evenement d'un des objets ado, mais apparemment c pas faisable, ou bien c'est trop evident, et personne n'y pense (mais j'y crois pas trop)...

  8. #8
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    J'utilise pas Ms SQL server, mais je pense que c'est à peut près pareil le fonctionnement.
    Chez moi, c'est interbase 6.
    Normalement tu dois creer un trigger after update ou insert ou delete sur les tables que tu veux monitorer.
    Avec Interbase tu peux poster un event avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Post_event('MESSAGE') (Je sais pas l'equivalent chez MS SQL Server)
    Donc dans chaque trigger tu met ce post_event.
    Avec le composant IbEvent, je peux être averti de ces messages et reagir en fonction.
    Reste à trouver l'équivalent en SQL Server et ADO

    Courage
    On progresse .....

Discussions similaires

  1. [1.1] Comment savoir que l'on a changé de date ?
    Par fregolo52 dans le forum Framework .NET
    Réponses: 8
    Dernier message: 02/10/2006, 19h38
  2. Réponses: 1
    Dernier message: 16/01/2006, 10h15
  3. Réponses: 9
    Dernier message: 19/10/2005, 04h35
  4. Réponses: 19
    Dernier message: 26/01/2005, 10h41
  5. Comment savoir que le cable réseau a été débranché
    Par laurent82 dans le forum Web & réseau
    Réponses: 3
    Dernier message: 12/07/2004, 20h37

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