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 :

Trigger sur l'enregistrement courant


Sujet :

SQL Firebird

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Trigger sur l'enregistrement courant
    Voila mon problème (en fait je suis nouveau sur interbase et sql en général)

    Dans une application delphi que je suis entrain de concevoir j'utilise interbase et plus particulierement un "TRIGGER after update" pour calculer la moyenne de plusieurs valeurs entrées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     new.moy=(new.val1+new.val2)/2 ;
    mais apparamment interbase cherche à mettre à jours tous les champs de la table or je ne veux modifier que l'enregistrement courant

    Merci pour votre aide

  2. #2
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Pourquoi stoquer une valeur calculée ???

    Sinon pour vous aider il faudrait nous en dire un peu plus, nous donnez le code de votre trigger par exemple.
    Car si vous ne faites que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new.moy=(new.val1+new.val2)/2;
    celà n'affecte que l'enregistrement courrant.

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    En fait je ne veux pas passer par l'événement ONCALCFIELD de delphi car avec une table de 15000 enregistrements c'est assez lourd je voudrais donc faire le calcul dans le serveur plutot et uniquement les valeurs qui ont changé.

    Pour ce qui est du code complet du trigger le voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    CREATE TRIGGER TABLE1_AU FOR TABLE1 ACTIVE
    AFTER UPDATE POSITION 0
    AS
    BEGIN
      update table1 set new.moy1=(new.NOTE1+new.NOTE2)/2 ;
    END
    Apres changement des valeurs dans la table j'ai le message d'erreur suivant :
    too many concurrent executions for the same request

  4. #4
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Et donc pourquoi ne pas essayé la correction que je vous ai proposé ?
    Citation Envoyé par Barbibulle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new.moy=(new.val1+new.val2)/2;

  5. #5
    Candidat au Club
    Inscrit en
    Juillet 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoups barbibulle, C'est bon pour moi le pb est résolu mais il fallait mettre le trigger en BEFORE UPDATE et non pas en AFTER UPDATE.

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

Discussions similaires

  1. [Toutes versions] Pb Sur Suppression enregistrement courant
    Par Aladin_23 dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/12/2011, 11h38
  2. Réponses: 6
    Dernier message: 28/11/2010, 13h00
  3. Réponses: 8
    Dernier message: 26/10/2007, 13h21
  4. rester sur l'enregistrement courant
    Par jpp81 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 20/01/2007, 13h21
  5. Réponses: 6
    Dernier message: 31/08/2006, 01h32

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