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

MS SQL Server Discussion :

Fonction dans un trigger


Sujet :

MS SQL Server

  1. #1
    Membre régulier
    Homme Profil pro
    etudiant
    Inscrit en
    Mai 2010
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 222
    Points : 104
    Points
    104
    Par défaut Fonction dans un trigger
    bonjour j'ai un soucis , je veux insérer dans un champ automatiquement via un trigger le calcul d'une fonction mais il y a une erreur je vous donne tout ce que j'ai fait + l'erreur que j'ai eu :
    la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    create function mont_fon() 
    returns money
    as
    begin 
    declare @calcul money
    set @calcul= (select cast ((( montant_adhesion*30)+(nbre_usager*1000)+(nbre_caisse*10000))as money )
    from accord
    inner join lettre_financement on accord.code_lettre=lettre_financement.code_lettre
    where accord.code_lettre=lettre_financement.code_lettre)
    return @calcul
    end
    le trigger
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TRIGGER MAJ_fond ON accord
    FOR INSERT , update
    AS
    begin 
    declare @cash AS money
    SET @cash=(SELECT dbo.mont_fon())
    Insert INTO accord(mont_fon_prop) VALUES(@cash);
    end
    le message d'erreur et merci de toute aide
    Images attachées Images attachées  

  2. #2
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Quand vous faites ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    declare @calcul money
    SET @calcul= (SELECT cast ((( montant_adhesion*30)+(nbre_usager*1000)+(nbre_caisse*10000))AS money )
    FROM accord
    INNER JOIN lettre_financement ON accord.code_lettre=lettre_financement.code_lettre
    WHERE accord.code_lettre=lettre_financement.code_lettre)
    Ou ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    declare @cash AS money
    SET @cash=(SELECT dbo.mont_fon())
    Votre requête ne peut renvoyer plus d'un enregistrement.

    Au passage j'ai vraiment du mal à comprendre l'intérêt de votre TRIGGER.

    Que vous insériez une ou plusieurs lignes dans la table accord vous faites la même opération...

    Je pense que vous ne maîtrisez pas du tout la notion de TRIGGER.

  3. #3
    Membre régulier
    Homme Profil pro
    etudiant
    Inscrit en
    Mai 2010
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 222
    Points : 104
    Points
    104
    Par défaut
    merci mais je comprend la notion de trigger mais c'est notre prof qui a dit de réaliser ça comme ça . Merci de vos reponses

  4. #4
    Membre régulier
    Homme Profil pro
    etudiant
    Inscrit en
    Mai 2010
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 222
    Points : 104
    Points
    104
    Par défaut
    j'ai reussi , j'ai beaucoup cherché puis voila
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    create trigger Maj_accord_fond on accord
    for insert
    as
    begin
    update accord
    set mont_fon_prop = cast ((( accord.montant_adhesion*30)+(accord.nbre_usager*1000)+(accord.nbre_caisse*10000))as money )
    from accord 
    inner join 
    inserted on accord.code_lettre=inserted.code_lettre
    inner join lettre_financement
    on accord.code_lettre=lettre_financement.code_lettre
    end

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

Discussions similaires

  1. utilser une fonction dans un trigger
    Par k-eisti dans le forum PL/SQL
    Réponses: 3
    Dernier message: 28/01/2008, 21h11
  2. RAZ GENERATOR dans un trigger
    Par kase74 dans le forum SQL
    Réponses: 2
    Dernier message: 08/09/2003, 18h43
  3. select dans un trigger sous Postgresql
    Par kastor_grog dans le forum Requêtes
    Réponses: 1
    Dernier message: 03/09/2003, 17h00
  4. impossible d'utiliser ma fonction dans un insert
    Par caramel dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/04/2003, 15h04
  5. [PostgreSQL] Refus de STATEMENT dans un trigger
    Par alex2205 dans le forum Requêtes
    Réponses: 3
    Dernier message: 10/03/2003, 12h51

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