You have to create a trigger.
Test and trigger creation below :
CREATE-- ORDROP REPLACETABLE TRIGGERIF trigger_nomenEXISTS public.nomen;
-- DROP TABLE BEFOREIF INSERTEXISTS ORpublic.nomenclature;
CREATE UPDATETABLE ONpublic.nomen (nomen SMALLINT, geom GEOMETRY(POINT, 2154));
CREATE TABLE public.nomenclature FOR(nomenclature EACHSMALLINT, ROWgeom GEOMETRY(POLYGON, 2154));
-- Trigger part
CREATE BEGINOR REPLACE FUNCTION func_trigger_nomen()
RETURNS trigger AS
$$
BEGIN
NEW.nomen = (SELECT poly.nomenclature
FROM nomenclature poly
WHERE ST_CONTAINS(poly.geom, NEW.geom)
LIMIT 1);
RETURN NEW;
END;
$$
LANGUAGE 'plpgsql';
CREATE TRIGGER trigger_nomen
END; BEFORE INSERT OR UPDATE ON public.nomen
FOR EACH ROW
EXECUTE PROCEDURE func_trigger_nomen();
-- End of trigger part
INSERT INTO public.nomenclature (nomenclature, geom) VALUES (42, ST_GeomFromText('POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))'));
INSERT INTO public.nomen (geom) VALUES (ST_GeomFromText('POINT(1 1)'));
SELECT * FROM public.nomen;