Ajouter une trace lors de la suppression d'une ligne d'une table spécifique

L'idée est de créer une fonction Pl/Pgsql et de la lier à un déclencheur (trigger pour les anglophones).

Voici à quoi doit ressembler la requête de création de la fonction :

create or replace function trace() returns trigger as '
declare
  utilisateur varchar(255);
begin
select into utilisateur current_user;
raise notice \'Suppression de la ligne % par l\'\'utilisateur %\', old.identifiant_ligne, utilisateur;
return old;
end;
' langage 'plpgsql';

Et voici la requête faisant le lien entre cette fonction et un nouveau déclencheur :

create trigger trace_matable before delete on matable for each row execute procedure trace();

Lors de la prochaine suppression, vous obtiendrez ce genre de messages dans vos traces :
NOTICE: Suppression de la ligne 880100 par l'utilisateur gl

Ajouter un commentaire

Les commentaires peuvent être formatés en utilisant une syntaxe wiki simplifiée.

Fil des commentaires de ce billet