6
votes

Exécution de la procédure dans un déclencheur

est-il possible d'exécuter une procédure stockée dans un déclencheur?

merci


1 commentaires

Si je devais juste l'exécuter moi-même, cela fonctionnera. Je veux créer un déclencheur là où il l'exécutera quand il ya de la valeur dans un champ


4 Réponses :


1
votes

dans SQL Server c'est. Quel SGBD utilisez-vous?

eta: oracle, hein? Je n'ai aucune expérience personnelle avec elle, mais Ceci semble indiquer que vous pouvez. Je l'ai trouvé par Googling "Oracle Trigger Procédure stockée".


0 commentaires

12
votes

Oui, comme ceci:

create or replace trigger trg
after insert on emp
for each row
begin
   myproc(:new.empno, :new.ename);
end;


5 commentaires

Qu'est-ce que: nouveau.empno? [signifie: neuf?]


@Freelancer: Dans les déclencheurs de niveau d'oracle Oracle, vous pouvez vous reporter aux valeurs de colonne avant et après l'effet de la déclaration de déclenchement utilisant: Ancien et: Neuf. Ceci était censé être un déclencheur de niveau de ligne, je viens d'ajouter le manquant pour chaque ligne partie.


Je suis surpris qu'après près de 4 ans, personne n'a signalé l'erreur dans ma réponse d'origine (le pour chaque ligne )!


@Pieterdebie, aucune déclaration exécutée. Exécuter immédiatement serait utilisé pour exécuter une procédure de manière dynamique. C'est-à-dire que si vous ne connaissiez pas le nom de la procédure, vous allez courir jusqu'à ce que la gâchette soit déclenchée - ce qui n'est pas typique.


Ce que l'on entend par myProc (: nouveau.empno,: nouveau.Name);



1
votes

Oui, vous pouvez. Gardez simplement à l'esprit qu'un déclencheur peut tirer pour chaque rangée affectée par un déclencheur DML. Votre procédure stockée doit donc être optimisée ou vous pourriez rencontrer des problèmes de performance. Les déclencheurs sont une bonne chose, mais il vous suffit de garder à l'esprit les problèmes de performance qui peuvent se présenter lors de leur utilisation.


0 commentaires

2
votes

Oui, vous pouvez déclencher une procédure d'un déclencheur. Mais gardez à l'esprit que le déclencheur et la procédure e ne devrait pas accéder à la même table.


0 commentaires