none
trigger RRS feed

  • Question

  • salut,

    j'ai un table STATION (nomStation, capacité, lieu, région, tarif) et un table activite(nomStation#, libellé, prix) et un autre CLIENT (id, nom, prénom, ville, région, solde)

    la question c'est comment  Implantez par un trigger la règle suivante : si le prix d'une activité baisse, alors le tarif de la station doit augmenter de la différence. Indication : le trigger doit se déclencher sur une modification, et tester pour chaque ligne que la nouvelle valeur est plus grande que l'ancienne. Si ce n'est pas le cas, faire un UPDATE de la station pour ajouter la différence entre l'ancienne et la nouvelle valeur.

    aider moi à trouver le code sql de ce trigger

    amina

    jeudi 4 novembre 2010 22:28

Réponses

  • Le code de ce trigger est totalement faux. En effet, les déclencheurs MS SQL Server sont ensembliste. Dans le cas ou vous mettez à jour plusieurs lignes simultanément, celui-ci n'agira que sur une seule ligne en tout et pour tout.

    Dans un trigger MS SQL Server il ne devrait pas y avoir de variables ! La présence de variables est généralement le signe d'un code faux.

    Voici en définitif le code à faire :

    CREATE TRIGGER NomDéclencheur
    ON dbo.STATION
    FOR UPDATE
    AS
    
    UPDATE STATION 
      SET  tarif = tarif + d.prix - i.prix
      FROM STATION AS s
         INNER JOIN INSERTED as i
            ON s.nomStation = i.nomStation 
         INNER JOIN DELETED as d
            ON s.nomStation = d.nomStation 
    

     


    Frédéric BROUARD, Spécialiste modélisation, SGBR relationnel, optimisation, langage SQL * * * Le site sur le langage SQL et les SGBD relationnels : http://sqlpro.developpez.com/ * * * Expert SQL Server http://www.sqlspot.com : audit, optimisation, tuning, formation * * * Le blog sur SQL / MS SQL Server http://blog.developpez.com/sqlpro * * * Enseignant CNAM PACA, ISEN Toulon, CESI/EXIA Aix En Provence
    • Marqué comme réponse Alex Petrescu vendredi 12 novembre 2010 09:58
    jeudi 11 novembre 2010 13:31