Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4037 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  trigger sql

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

trigger sql

n°589406
the big be​n
Posté le 12-12-2003 à 18:18:25  profilanswer
 

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

mood
Publicité
Posté le 12-12-2003 à 18:18:25  profilanswer
 

n°589588
the big be​n
Posté le 12-12-2003 à 20:57:08  profilanswer
 

up

n°594175
Cyberpat92
Posté le 19-12-2003 à 14:01:54  profilanswer
 

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
n°594243
MagicBuzz
Posté le 19-12-2003 à 15:32:54  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  trigger sql

 

Sujets relatifs
[postgresql] trigger sur l'heure systeme ? edit : utilisation crontab[postgresql] trigger, j'ai du mal
[Oracle Trigger] il marche pas, je c pas pkoiTrigger sous MYSQL
[MySQL] triggerMega problème pour un trigger update
[ORACLE] Trigger qui insere dans une autre basetrigger
ACCESS utilise des Trigger ???Trigger sous Acces
Plus de sujets relatifs à : trigger sql


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)