Bonjour à tous,

Les Triggers de lignes ne permettent pas de gérer toutes les contraintes de certains schémas relationnels car dans un Trigger de ligne il est impossible de requeter la table en cours de modification, il faut alors introduire le concept de Trigger de table ainsi que celui de Curseur.

Structure Curseur :

DECLARE --Dans un Trigger
    Cursor nomCurseur IS
    SELECT …
    ;
...

Concaténation PL / SQL :

RAISE_APPLICATION_ERROR (-20001, “L’agence “ || variable || “pose problème”);

Parcourir un Curseur :

BEGIN
    OPEN nomCurseur;
    LOOP
        FETCH nomCurseur INTO tuple;
        EXIT WHEN nomCurseur%NOTFOUND;
            DBMS_OUT.PUT_LINE ( “ … “ ) ;
            pb := pb + 1 ;
    END LOOP ;
    IF ( pb > 0) THEN
        RAISE_APPLICATION_ERROR ( -20000, “ … “ ) ;
    END IF;
END;

OU (plus simple, à préférer)

BEGIN
    FOR tuple IN nomCurseur
    LOOP
        DBMS_OUTPUT.PUT_LINE ( “ … “ ) ;
    END LOOP;

Si vous pensez que cette série d’articles peut intéresser d’autres personnes,vous pouvez partager cet article sur les réseaux sociaux et par mail à vos amis.

Pour toutes questions vous pouvez me contacter par mail ou via l’onglet “Contact” en haut du site.

Merci !