Ошибка говорит о том, что вы должны вернуть что-то из триггера (либо NEW
, либо NULL
)
Для этого не требуется триггер. Простой View
с помощью этого запроса выбора даст вам требуемый результат
--create or replace view sample_view as
select t.id, t.created_date,
row_number() OVER ( partition by id,created_date order by id ) as current_order
FROM sample_tbl t;
Это будет точно соответствовать записям, если они обновлены с использованием триггера
CREATE OR REPLACE FUNCTION test_func()
RETURNS TRIGGER AS
$$
DECLARE cnt INTEGER;
BEGIN
select COUNT(*) INTO cnt FROM sample_tbl WHERE id = NEW.id
AND created_date = NEW.created_date;
NEW.current_order := cnt + 1;
RETURN NEW; --required
END
$$ LANGUAGE plpgsql;
Демо