Je souhaite utiliser la procédure raise_application_error pour interrompre le processus de connexion. J'ai écrit un déclencheur, qui vérifie la chaîne TERMINAL, si elle est correcte (je sais que ce n'est pas vraiment sécurisé, mais au début, c'est suffisant) Donc le Trigger fonctionne bien et fait ce que je veux, mais le raise_application_error cause une annulation et envoie pas l'exception que je veux. Lorsque je me connecte à la base de données avec mon application, l'erreur raise_application_error n'arrête pas l'application. Première question: Est-ce la bonne façon, d'arrêter la connexion à la base de données avec la mauvaise application? Deuxième question: Si oui, quel est le problème?Oracle Trigger: raise_application_error
create or replace
TRIGGER after_logon_on_database
AFTER LOGON ON DATABASE
BEGIN
IF sys_context('USERENV', 'TERMINAL')='IAS' THEN
INSERT INTO event_log
(event_date, event_time, username, event_case, event_comment)
VALUES
(SYSDATE, to_char(sysdate, 'hh24:mi:ss'), USER, 'LOGON-SUCCESS', sys_context('USERENV', 'TERMINAL'));
ELSE
INSERT INTO event_log
(event_date, event_time, username, event_case, event_comment)
VALUES
(SYSDATE, to_char(sysdate, 'hh24:mi:ss'), USER, 'LOGON-FAILURE', sys_context('USERENV', 'TERMINAL'));
RAISE_APPLICATION_ERROR(-20001, 'Access denied!');
END IF;
END after_logon_on_database;