trigger sql

trigger sql - SQL/NoSQL - Programmation

Marsh Posté le 12-12-2003 à 18:18:25    

Bonjour,
 
Peut on faire des DECLARE dans un trigger sql (sous sybase) et sinon qu est ce qui ne va pas dans mon code???
 
D'avance merci!

Code :
  1. CREATE TRIGGER trig_maj_arrive
  2. ON convois
  3. FOR update
  4. AS IF UPDATE(bool_arrive)
  5. begin
  6. DECLARE @dep varchar(10)
  7. DECLARE @arriv varchar(10)
  8. IF (SELECT I.direction FROM insterted I) = 0 /* Bxls vers Arlon */
  9. begin
  10.   @dep = "Bruxelles"
  11.   @arriv = "Arlon"
  12. end
  13. ELSE /*Arlon vers Bxls */
  14. begin
  15.   @dep = "Arlon"
  16.   @arriv = "Bruxelles"
  17. end
  18. /**** On met à jour le stock de wagon de les gare ****/
  19. /* On décrémente le stock dans la gare de départ */
  20. UPDATE gares SET stock_wagon = stock_wagon-
  21.   (SELECT count(*)
  22.     FROM wagon_convoi WC, inserted I
  23.     WHERE WC.no_convoi = I.no_convoi)
  24. WHERE gares.nom = @dep
  25. end

Reply

Marsh Posté le 12-12-2003 à 18:18:25   

Reply

Marsh Posté le 12-12-2003 à 20:57:08    

up

Reply

Marsh Posté le 19-12-2003 à 14:01:54    

The big ben a écrit :

Bonjour,
 
Peut on faire des DECLARE dans un trigger sql (sous sybase) et sinon qu est ce qui ne va pas dans mon code???
 
D'avance merci!

Code :
  1. CREATE TRIGGER trig_maj_arrive
  2. ON convois
  3. FOR update
  4. AS IF UPDATE(bool_arrive)
  5. begin
  6. DECLARE @dep varchar(10)
  7. DECLARE @arriv varchar(10)
  8. IF (SELECT I.direction FROM insterted I) = 0 /* Bxls vers Arlon */
  9. begin
  10.   @dep = "Bruxelles"
  11.   @arriv = "Arlon"
  12. end
  13. ELSE /*Arlon vers Bxls */
  14. begin
  15.   @dep = "Arlon"
  16.   @arriv = "Bruxelles"
  17. end
  18. /**** On met à jour le stock de wagon de les gare ****/
  19. /* On décrémente le stock dans la gare de départ */
  20. UPDATE gares SET stock_wagon = stock_wagon-
  21.   (SELECT count(*)
  22.     FROM wagon_convoi WC, inserted I  WHERE gares.nom = @dep
  23. end




 
1. C'est : inserted
 
2. Oui, on peut faire des déclarations dans un trigger
 
    WHERE WC.no_convoi = I.no_convoi)  
 
3. Tu dois assigner tes variables avec SET ou SELECT. Enfin, tu devrais peut-être utiliser des ' plutôt que des " pour tes chaînes.
 
SET @dep = 'Arlon'
SET @arriv = 'Bruxelles'
 
ou  
 
SELECT @dep = 'Arlon'
SELECT @arriv = 'Bruxelles'


Message édité par Cyberpat92 le 19-12-2003 à 14:04:45
Reply

Marsh Posté le 19-12-2003 à 15:32:54    

perso, je préfèreles set, parceque le select a une syntaxe dépendante du SGBD. Avec MSSQL Server par exemple, on peut omètre me from comme tu l'as fait, mais avec Oracle, il faut mettre "from dual". Donc autant utiliser le SET, qui sera reconnu par tous les sgbd

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed