Poster une réponse à un sujet: Trigger sur une DB MS SQL
Attention, ce sujet est un sujet ancien (5044 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 ?