Exemples IN AUTONOMOUS TRANSACTION
Cet exemple montre l’utilisation d’une transaction hors ligne dans un déclencheur d’événements de connexion à une base de données pour enregistrer toutes les tentatives de connexion, y compris celles qui échouent.
CREATE TRIGGER TR_CONNECT ON CONNECT
AS
BEGIN
-- Toutes les tentatives de connexion à la base de données sont enregistrées
IN AUTONOMOUS TRANSACTION DO
INSERT INTO LOG(MSG)
VALUES ('USER ' || CURRENT_USER || ' CONNECTS.');
IF (CURRENT_USER IN (SELECT
USERNAME
FROM
BLOCKED_USERS)) THEN
BEGIN
-- L'enregistrement de cette tentative de connexion
-- avec la base de données n'a pas abouti
-- et a envoyer un message d'événement
IN AUTONOMOUS TRANSACTION DO
BEGIN
INSERT INTO LOG(MSG)
VALUES ('USER ' || CURRENT_USER || ' REFUSED.');
POST_EVENT 'CONNECTION ATTEMPT' || ' BY BLOCKED USER!';
END
-- lève maintenant une exception
EXCEPTION EX_BADUSER;
END
END