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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Oracle&SQL].sql contenant la creation de plusieurs triggers (RESOLU)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Oracle&SQL].sql contenant la creation de plusieurs triggers (RESOLU)

n°361515
Masure
Posté le 15-04-2003 à 12:01:16  profilanswer
 

Je souhaite grouper mes requetes de creation de triggers dans un fichier .sql tout comme je l ai fait pour la creation de mes tables.
 
Je commence donc par create puis end et je passe au create suivant... normal quoi.
 
Voila un morceau du fichier que j execute via la commande @ sous sqlplus :
 

Code :
  1. /* Cree les configurations de liens quand une association entre*/
  2. /*UTILISATEUR et GROUPE est cree */
  3. create or replace trigger T_A_I_UTILISATEUR_GROUPE
  4. after insert on W_UTILISATEUR_GROUPE
  5. for each row
  6. declare
  7. /* Liste des liens concernant le nouveau groupe utilisateur */
  8. cursor C_LIENS_GROUPE is select LIEN from W_GROUPE_LIEN
  9.  where :new.GROUPE = W_GROUPE_LIEN.GROUPE ;
  10. /* Variable recevant le fetch pour les codes des liens */
  11. V_LIEN_COURANT W_LIEN.CODE%type ;
  12. begin
  13. open C_LIENS_GROUPE ;
  14. loop
  15.  fetch C_LIENS_GROUPE into V_LIEN_COURANT ;
  16.  insert into W_CONFIG_LIEN_UTILISATEUR (LIEN, UTILISATEUR)
  17.   values (V_LIEN_COURANT, :new.UTILISATEUR) ;
  18.  exit when C_LIENS_GROUPE%notfound ;
  19. end loop;
  20. end T_A_I_UTILISATEUR_GROUPE ;
  21. /* Supprime les configurations de liens quand une association entre*/
  22. /*   UTILISATEUR et GROUPE est supprimée */
  23. create or replace trigger T_A_D_UTILISATEUR_GROUPE
  24. after delete on W_UTILISATEUR_GROUPE
  25. for each row
  26. declare
  27. cursor C_LIENS_GROUPE is select LIEN from W_GROUPE_LIEN
  28.  where :old.GROUPE = W_GROUPE_LIEN.GROUPE ;
  29. V_LIEN_COURANT W_LIEN.CODE%type ;
  30. begin
  31. open C_LIENS_GROUPE ;
  32. loop
  33. fetch C_LIENS_GROUPE into V_LIEN_COURANT ;
  34. delete from W_CONFIG_LIEN_UTILISATEUR
  35.  where V_LIEN_COURANT = W_CONFIG_LIEN_UTILISATEUR.LIEN
  36.  and :old.UTILISATEUR = W_CONFIG_LIEN_UTILISATEUR.UTILISATEUR ;
  37.  exit when C_LIENS_GROUPE%notfound ;
  38. end loop;
  39. end T_A_D_UTILISATEUR_GROUPE ;
  40. ...
  41. ..
  42. .


 
Le sho err donne ca :
 

Code :
  1. 22/1     PLS-00103: Symbole "CREATE" rencontrÚ


 
Super sympa j'aimerais qu il me cree mon 2eme trigger au lieu de me dire "ouay mais non un trigger c'est deja bien assez t en crees pas un 2eme garcon  :non: "
 
Ah oui je precise que si j'execute mes 20 triggers separement, it works  [:yaisse2] !
 
Si vous avez une syntaxe pour enchainer la creation de triggers dans un fichier sql... merchi :)
 
 
EDIT Solution :
 
syntaxe :
 

Code :
  1. /* debut du fichier sql */
  2. create trigger nom_trigger
  3. ...
  4. end ;
  5. /
  6. create trigger nom_trigger2
  7. ...
  8. end ;
  9. /
  10. ...
  11. /* fin du fichier sql */


Message édité par Masure le 15-04-2003 à 14:06:28
mood
Publicité
Posté le 15-04-2003 à 12:01:16  profilanswer
 

n°361580
polo021
Posté le 15-04-2003 à 12:52:04  profilanswer
 

et si tu mets / a la fin de ton premier trigger? :??:

n°361675
vttman2
Je suis Open ...
Posté le 15-04-2003 à 13:31:09  profilanswer
 

c pas ça la syntaxe ?
 
declare
 
Begin
 
... 1 creat trigger
 
... 2 creat trigger
 
end.

n°361748
Masure
Posté le 15-04-2003 à 14:03:53  profilanswer
 

polo021 a écrit :

et si tu mets / a la fin de ton premier trigger? :??:  


 
Et bien j'etais persuadé que le "/" indiquait la fin du fichier... merci beaucoup car ca marche en effet.
 
On doit donc mettre un / a la fin de chaque trigger

n°361763
polo021
Posté le 15-04-2003 à 14:09:11  profilanswer
 

masure a écrit :


 
Et bien j'etais persuadé que le "/" indiquait la fin du fichier... merci beaucoup car ca marche en effet.
 
On doit donc mettre un / a la fin de chaque trigger


 
ben j'en etais pas sur en fait. Mais si je me souviens bien le / n'indique pas la fin du fichier mais bien la fin d'une fonction, procedure ou trigger,... dans un bloc pl/sql. Et c'est comme ca que Oracle sait qu'il peut traiter ce bloc. Mais tu dois quand meme mettre ton end T_A_I_UTILISATEUR_GROUPE ;  
 
Et avaec la solution de vttman2 ca donnait quoi?


Message édité par polo021 le 15-04-2003 à 14:10:53
n°361774
Masure
Posté le 15-04-2003 à 14:18:13  profilanswer
 

polo021 a écrit :


 
ben j'en etais pas sur en fait. Mais si je me souviens bien le / n'indique pas la fin du fichier mais bien la fin d'une fonction, procedure ou trigger,... dans un bloc pl/sql. Et c'est comme ca que Oracle sait qu'il peut traiter ce bloc. Mais tu dois quand meme mettre ton end T_A_I_UTILISATEUR_GROUPE ;  
 
Et avaec la solution de vttman2 ca donnait quoi?


 
a vrai dire je ne l'ai pas essayé car ca me paraissait assez bizarre...
 
Peut etre est ce la syntaxe de creation de package ? Je ne m'y suis pas penché encore


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

  [Oracle&SQL].sql contenant la creation de plusieurs triggers (RESOLU)

 

Sujets relatifs
Config Apache/Sql[Résolu] Espace non désiré sous une image dans un tableau
[SQL] OR inclusif? question inside [NewB]is, isw routines...[résolu]
temps d'execution d'une requete SQLSQL petit problème...[Résolu]
Quel hébergeur accepte les connections SQL distantesExpressions régulières [RESOLU PAR MOI-MEME)
[PHP] Convertir une valeur contenant un espace -> valeur avec %20 
Plus de sujets relatifs à : [Oracle&SQL].sql contenant la creation de plusieurs triggers (RESOLU)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR