Вы случайно обновили old
вместо new
. Попробуйте:
CREATE OR REPLACE FUNCTION update_modelname_function()
RETURNS trigger AS
$BODY$
BEGIN
IF tg_op = 'INSERT' THEN
new.model_name := upper(new.model_name);
RETURN new;
ELSIF tg_op = 'UPDATE' THEN
new.model_name := upper(new.model_name);
RETURN new;
END IF;
END
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
Если в примере показан весь код, а фактические триггеры запускаются только на INSERT
и / или UPDATE
, вы можете еще больше упростить:
CREATE OR REPLACE FUNCTION update_modelname_function()
RETURNS trigger AS
$BODY$
BEGIN
new.model_name := upper(new.model_name);
RETURN new;
END
$BODY$
LANGUAGE plpgsql VOLATILE;