Merci pour le lien, là je suis en train de regarder les différents articles présent sur le site

Là je viens de regarder la doc, mais je ne suis pas sur d'avoir bien compris ^^
Voici ce qu'il donne :
Code
CREATE FUNCTION emp_stamp() RETURNS trigger AS '
BEGIN
-- Verifie que empname et salary sont donnés
IF NEW.empname IS NULL THEN
RAISE EXCEPTION ''empname cannot be NULL'';
END IF;
IF NEW.salary IS NULL THEN
RAISE EXCEPTION ''% cannot have NULL salary'', NEW.empname;
END IF;
-- Qui travaille pour nous quand elle doit payer pour cela ?
IF NEW.salary < 0 THEN
RAISE EXCEPTION ''% cannot have a negative salary'', NEW.empname;
END IF;
-- Rappelons nous qui a changé le payroll quand
NEW.last_date := ''now'';
NEW.last_user := current_user;
RETURN NEW;
END;
' LANGUAGE plpgsql;
CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON emp
FOR EACH ROW EXECUTE PROCEDURE emp_stamp();
Ce que je comprend pas, c'est pourquoi il retourne un trigger ?
Car il retourne NEW, ce qui veux donc dire qu'il retourne la commande SQL que l'on lui a passé, mais qu'il modifie quelques informations, comme la last_date, ainsi que last_user.
Merci d'avance