Je cherche à créer un simple trigger avec PostgreSQL. J'ai la 9.2 mais j'ai aussi essayé avec la 8.3. Le résultat est le même. Lorsque j'exécute ce simple code :

CREATE OR REPLACE FUNCTION public.trigger_tmp (
)
RETURNS trigger AS'
BEGIN
NEW.NOM:=''xxx'';
return NEW;
END
'LANGUAGE 'plpgsql'
;

CREATE TABLE public."TMP" (
"ID" SERIAL,
"NOM" VARCHAR(30) NOT NULL,
CONSTRAINT "TMP_pkey" PRIMARY KEY("ID")
) WITHOUT OIDS;

CREATE TRIGGER "TMP_trg"
BEFORE INSERT OR UPDATE
ON public."TMP" FOR EACH ROW
EXECUTE PROCEDURE public.trigger_tmp();

INSERT INTO public."TMP"("NOM") VALUES('ABC');
J'obtiens l'erreur :

L'enregistrement "new" n'a pas de champ "nom".
Le code est syntaxiquement correct. Il insère 'ABC' dans la colonne NOM mais à cause du trigger, c'est 'xxx' qui devrait y être finalement mis. Le trigger est bien exécuté puisque j'ai le msg d'erreur. J'ai parcouru internet longuement et je ne vois pas où est mon erreur. Quelqu'un a-t-il une idée ?

Serge