est-il possible d'exécuter une procédure stockée dans un déclencheur? p>
merci p>
4 Réponses :
dans SQL Server c'est. Quel SGBD utilisez-vous? P>
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". P>
Oui, comme ceci:
create or replace trigger trg after insert on emp for each row begin myproc(:new.empno, :new.ename); end;
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 code> 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 code>)!
@Pieterdebie, aucune déclaration exécutée. Exécuter immédiatement code> 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);
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. P>
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. P>
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