Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/08/2007, 13h24   #1
Membre habitué
 
Inscription : novembre 2004
Messages : 424
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 424
Points : 112
Points : 112
Par défaut Trigger statement ou row

bonjour à tous,

j'ai vu qu'on pouvait faire des triggers par statement ou for each roww ...

Quelle est la différence ?
Dans quel cas utiliser l'un ou l'autre ?
Peut on les utiliser en parallèle ?
Avez vous des docs (lien) la dessus

Merci pour vos éclaircissements.
__________________
----------------------------------
La façon la plus efficace de combattre un système qui ne nous convient plus
n'est pas de lutter contre lui mais de s'en désintéresser et de ne plus l'alimenter...

----------------------------------
lenoil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2007, 13h36   #2
Expert Confirmé
 
Avatar de LeoAnderson
 
Inscription : septembre 2004
Messages : 2 942
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 2 942
Points : 2 972
Points : 2 972
soit l'ordre SQL suivant :
Code :
UPDATE salaries SET salaire = salaire * 1.50;
si vous avez un statement trigger, il sera déclenché une seule fois;
si vous avez un trigger for each row, il sera déclenché 15 209 fois, correspondant au 15209 lignes de la table salaries.
LeoAnderson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2007, 13h42   #3
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 450
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 450
Points : 4 209
Points : 4 209
J'ai cherché dans les cours, j'ai pas trouvé de cours là dessus. mais sur google t'aura plein d'exemples.

Tu as plusieurs types de triggers sur table (tu en a d'autres au niveau base) :
BEFORE / AFTER
Puis
INSERT/DELETE/UPDATE
puis
FOR EACH ROW / (statement)

Un trigger FOR EACH ROW s'exécutera pour chaque ligne traitée.
Un trigger global ne s'exécutera qu'une fois pour l'ordre DML passé.

Tout dépend donc de ce que tu dois faire. En général, les triggers sont au niveau ligne. Le niveau statement est plus rare.
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2007, 14h10   #4
Membre habitué
 
Inscription : novembre 2004
Messages : 424
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 424
Points : 112
Points : 112
Merci à tous les deux j'ai compris

J'ai trouvé de la doc entre temps sur ce même site
j'aurai du un peu plus cherché

donc c ok
__________________
----------------------------------
La façon la plus efficace de combattre un système qui ne nous convient plus
n'est pas de lutter contre lui mais de s'en désintéresser et de ne plus l'alimenter...

----------------------------------
lenoil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h26.


 
 
 
 
Partenaires

Hébergement Web