Это полный выстрел в темноте, но если предположить, что поле, которое вы хотите изменить, называется «счетчики», то я думаю, что триггер может выглядеть так:
CREATE OR REPLACE FUNCTION edicao_insert_trigger()
RETURNS trigger AS
$BODY$
DECLARE
total integer;
BEGIN
select count (*)
into total
from edicao e
where
(NEW.ano >= 2000 and e.ano >= 2000) or
(NEW.ano < 2000 and e.ano < 2000);
NEW.counter := total;
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
Затем, чтобы добавить триггерк вашей таблице:
CREATE TRIGGER insert_edicao_trigger
BEFORE INSERT
ON edicao
FOR EACH ROW
EXECUTE PROCEDURE edicao_insert_trigger()
Теперь, когда вы делаете вставку, он должен автоматически добавить значение для поля "counter".
Для записи, если вы пытаетесь получитьуникальный идентификатор, было бы намного лучше использовать последовательность.
create sequence edicao_gt_2000;
create sequence edicao_lt_2000;
CREATE OR REPLACE FUNCTION edicao_insert_trigger()
RETURNS trigger AS
$BODY$
BEGIN
NEW.counter :=
case
when NEW.ano >= 2000 then nextval ('edicao_gt_2000')
else nextval ('edicao_lt_2000')
end;
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;