Déclencheur pour afficher le message en utilisant PL / SQL
Je veux créer un déclencheur pour afficher le message «NOUVEAUX DÉTAILS EMPLOYÉ INSÉRÉS», chaque fois qu'un nouvel enregistrement est inséré dans la table Employé, et avoir ce code pour cela-
set serveroutput on;
create or replace trigger display_message
after insert or update on employee
for each row
when(new.emp_id>0)
begin
dbms_output.put_line('new employee details inserted');
end;
Mais cela ne me donne aucun résultat. S'il vous plaît aider, merci d'avance!
Réponses
Cela ne fonctionnera que si ce EMP_IDn'est pas plus grand que 0. C'est ça? Dans mon cas, cela fonctionne :
Exemple de tableau:
SQL> CREATE TABLE employee
2 (
3 emp_id NUMBER
4 );
Table created.
Déclencheur:
SQL> CREATE OR REPLACE TRIGGER display_message
2 AFTER INSERT OR UPDATE
3 ON employee
4 FOR EACH ROW
5 WHEN (new.emp_id > 0)
6 BEGIN
7 DBMS_OUTPUT.put_line ('new employee details inserted');
8 END;
9 /
Trigger created.
Essai:
SQL> SET SERVEROUTPUT ON;
SQL> INSERT INTO employee (emp_id)
2 VALUES (100);
new employee details inserted --> the message is here!
1 row created.
SQL>
C'est une très mauvaise utilisation d'un déclencheur. Et une utilisation encore pire de dbms_output. PL / SQL n'a aucune capacité d'interagir avec les périphériques de sortie sur le client. Par conséquent, la sortie de dbms_output.put_line n'est pas écrite sur votre écran. Il est écrit dans un tampon, pour être traité - ou non - par le client. Certains processus clients ignorent totalement l'existence de ce tampon. D'autres, comme sqlplus ou SQL Developer, le savent, mais doivent être informés de le traiter et de l'afficher. Avec sqlplus qui est via 'set serverout on'.
Tout cela pour dire que dbms_output est un bon outil de débogage, mais ne devrait jamais être utilisé dans une application de production réelle. Vous devez reconsidérer pourquoi vous voulez même cela. Si vous exécutez un INSERT à partir de n'importe quelle application, il réussira ou échouera. En cas d'échec, oracle mettra une erreur sur la pile qui sera signalée par le client. Si vous n'obtenez aucune erreur, vous savez que cela a réussi. Pourquoi avez-vous besoin de ce message?