Обработка данных для партиций в Postgresql

Переносим таблицы из Oracle в PG. Не мог найти рабочий пример для партиционирования по нескольким полям c использованием функции-триггера, помещающего запись в нужную таблицу-партицию и создающую ее в случае отсутствия. Пока есть неработающий вариант:

-- version: "PostgreSQL 12.9 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-4), 64-bit"
-- drop table tst;

create table tst
(
              id serial,
              int_v int,
              dt date,
              v varchar
)
partition by range (int_v, dt);

create table tst_0_1222 partition of tst for values from (0, '01.01.2021') to (1, '01.01.2021');

-- Функция

create or replace function ins_tst()
returns trigger as
$$

begin

              raise notice '%', new.dt::text;  -- Всегда null почему-то
              return null;

end
$$
language plpgsql;
 
-- Триггер

create trigger trg_tst
before insert on tst
--for each row -- Не позволяет для партиционированной таблицы, а без этого не могу обратиться к значению поля
execute function ins_tst();

insert into tst values (1, 1, current_timestamp, null);

Помогите, пожалуйста, привести это к правильной реализации.


Ответы (0 шт):