Poster une réponse à un sujet: Trigger sur une DB MS SQL
    Attention, ce sujet est un sujet ancien (4994 jours sans réponse)
    Gras [b]Texte[/b] Italique [i]Italique[/i] Souligné [u]Souligné[/u] Barré [strike]Barré[/strike]
    Courriel [email=nobody@nobody.org]Nom[/email] Lien [url=http://www.website.com]Texte[/url] Ancre [anchor]Nom[/anchor] Image [img]http://www.website.com/image.jpg[/img] Insérer une image en provenance du site
    Aligné à gauche [align=left]Texte[/align] Centré [align=center]Texte[/align] Aligné à droite [align=right]Texte[/align] Toute la largeur [align=justify]Texte[/text]
    Couleur [color=#000000]Text[/color] Mise en forme [highlight=pascal]Texte[/highlight] Widgets Emoticons :code: [:code] Convertisseur HTML vers BBCode Convertisseur Word vers BBCode
    Prévisualisation Vérification de l'orthographe

    Copier Coller Couper Tout sélectionner
    Tout effacer Insérer la date Insérer l'heure Insérer la date et heure Insérer votre IP
    Liste [list=square][item]BlaBla[/item][/list] Liste Numérotée [list=decimal][item]BlaBla[/item][/list]
    Citation [quote=name]Texte[/quote] Spoiler [spoiler]James est le meurtrier![/spoiler]
    Tout en majuscules [uppercase]Texte[/uppercase] Tout en minuscules [lowercase]Texte[/lowercase] l33t [l33t]Je suis un nerd[/l33t] Texte en indice [sub]Texte[/sub] Texte en exposant [sup]Texte[/sup] Taille du texte [size=8]Texte[/size]
     
    philfr
    Mettre des contraintes d'intégrité oui, modifier des données on the fly non.
    dede

    Pas d'accord.
    Il faut trouver un juste milieu, mais sinon, on se retrouve sans FK, ne check sur les valeurs, "parce que ca devrait etre valide cote client". Et ca devient un beau bordel ingerable, comme celui dans lequel je patauge en ce moment...

    Les triggers les procedures sont tres importants, c'est juste a ne pas donner entre toutes les mains.


    Je plussoye.
    gizmo
    Moi je dis que mettre du code dans une db c'est le mal :oh:

    Pas d'accord.
    Il faut trouver un juste milieu, mais sinon, on se retrouve sans FK, ne check sur les valeurs, "parce que ca devrait etre valide cote client". Et ca devient un beau bordel ingerable, comme celui dans lequel je patauge en ce moment...

    Les triggers les procedures sont tres importants, c'est juste a ne pas donner entre toutes les mains.
    Jean-Christophe
    oui, mais là, j'ai pas trop le choix.
    Je connais le programme qui ajoute les lignes et je sais qu'il n'en ajoute qu'une à la fois.
    Mais je ne sais pas le modifier. :spamafote:

    Mon histoire de vente et de vendeur est un prétexte pour l'exemple. Ici, ce n'est pas du tout le cas :wink:
    philfr
    Moi je dis que mettre du code dans une db c'est le mal :oh:
    Jean-Christophe
    il ne lance pas le trigger pour chaque ligne? C'est malin ça...
    Ceci dit, ici, je maîtrise le process qui fait la mise à jour. Et moi, je n'écris qu'une ligne à la fois.
    kortenberg
    Attention! Plusieurs insert peuvent arriver en même temps. (p.ex. en cas de INSERT INTO blabla SELECT blablabla)
    Dans ce cas, inserted contient plusieurs rows.
    Jean-Christophe
    Voilà, j'ai trouvé :smile:

    CREATE TRIGGER MonTrigger
    ON Ventes
    FOR INSERT
    AS
    BEGIN
    IF (SELECT prix FROM inserted) > 100
    UPDATE Vendeurs SET ventes = (SELECT ventes FROM Vendeur WHERE id =(SELECT Vendeur from inserted) + 1) WHERE id = (SELECT Vendeur from inserted)
    END


    \o/


    edit : Merci Kort :wink:
    kortenberg
    Un petit exemple où tu devrais trouver de quoi faire.
    Je ne suis pas un pro SQL[1] mais il marche.
    1. CREATE TRIGGER [message].[Message_TreatmentRootIDDefault] 
    2.    ON  [message].[Message] 
    3.    AFTER INSERTUPDATE 
    4. AS  
    5. BEGIN 
    6. SET NOCOUNT ON; 
    7. UPDATE [message].[Message] 
    8.    SET [TreatmentRootID] = [ID] 
    9.  WHERE [TreatmentRootID] IS NULL  
    10.  AND [ID] IN (SELECT ID FROM inserted) 
    11. END

    Il tourne en sur MSSQL2008 mais ça ne fait pas vraiment de différence

    [1] donc si un superpro voie un truc non optimal ou un problème dans ma manière de faire, qu'il n'hésite pas à le dire
    Jean-Christophe
    Bonjour les gens,

    Voilà, je ne connais rien en SQL, mais je me soigne.
    Pour le moment, je me casse la tête sur un trigger.

    Avec mes mots à moi :

    Sur la table VENTES
    Après un INSERT
    Si ventes.prix > 100 alors
    vendeur.ventes++ WHERE vendeurs.ID = ventes.vendeur
    fin


    Si vous avez des exemples que je puisse consulter, ce serait top :smile:

    Merci

    PS : MS SQL 2005
    Catégorie:  






    Ada
    CSS
    Cobol
    CPP
    HTML
    Fortran
    Java
    JavaScript
    Pascal
    Perl
    PHP
    Python
    SQL
    VB
    XML
    Anon URL
    DailyMotion
    eBay
    Flickr
    FLV
    Google Video
    Google Maps
    Metacafe
    MP3
    SeeqPod
    Veoh
    Yahoo Video
    YouTube
    6px
    8px
    10px
    12px
    14px
    16px
    18px
    Informaticien.be - © 2002-2024 AkretioSPRL  - Generated via Kelare
    The Akretio Network: Akretio - Freedelity - KelCommerce - Votre publicité sur informaticien.be ?