Programmation » Trigger sur une DB MS SQL
Trigger sur une DB MS SQL
Publié le 03/02/2011 @ 10:09:10,
Par Jean-ChristopheBonjour 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
Merci
PS : MS SQL 2005
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
Merci
PS : MS SQL 2005
Trigger sur une DB MS SQL
Publié le 03/02/2011 @ 10:37:43,
Par kortenbergUn petit exemple où tu devrais trouver de quoi faire.
Je ne suis pas un pro SQL[1] mais il marche.
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
Dernière édition: 03/02/2011 @ 10:43:54
Je ne suis pas un pro SQL[1] mais il marche.
- CREATE TRIGGER [message].[Message_TreatmentRootIDDefault]
- ON [message].[Message]
- AFTER INSERT, UPDATE
- AS
- BEGIN
- SET NOCOUNT ON;
- UPDATE [message].[Message]
- SET [TreatmentRootID] = [ID]
- WHERE [TreatmentRootID] IS NULL
- AND [ID] IN (SELECT ID FROM inserted)
- 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
Dernière édition: 03/02/2011 @ 10:43:54
Trigger sur une DB MS SQL
Publié le 03/02/2011 @ 10:44:58,
Par Jean-ChristopheVoilà, j'ai trouvé
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
Dernière édition: 03/02/2011 @ 10:46:39
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
Dernière édition: 03/02/2011 @ 10:46:39
Trigger sur une DB MS SQL
Publié le 03/02/2011 @ 10:57:02,
Par kortenbergAttention! 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.
Dans ce cas, inserted contient plusieurs rows.
Trigger sur une DB MS SQL
Publié le 03/02/2011 @ 11:29:45,
Par Jean-Christopheil 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.
Ceci dit, ici, je maîtrise le process qui fait la mise à jour. Et moi, je n'écris qu'une ligne à la fois.
Trigger sur une DB MS SQL
Publié le 03/02/2011 @ 11:34:43,
Par philfrMoi je dis que mettre du code dans une db c'est le mal
Trigger sur une DB MS SQL
Publié le 03/02/2011 @ 11:40:00,
Par Jean-Christopheoui, 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.
Mon histoire de vente et de vendeur est un prétexte pour l'exemple. Ici, ce n'est pas du tout le cas
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.
Mon histoire de vente et de vendeur est un prétexte pour l'exemple. Ici, ce n'est pas du tout le cas
Trigger sur une DB MS SQL
Publié le 03/02/2011 @ 11:48:20,
Par gizmoMoi je dis que mettre du code dans une db c'est le mal
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.
Concept vivant.
Trigger sur une DB MS SQL
Publié le 03/02/2011 @ 12:01:31,
Par dedePas 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.
Trigger sur une DB MS SQL
Publié le 03/02/2011 @ 23:38:42,
Par philfrMettre des contraintes d'intégrité oui, modifier des données on the fly non.