Триггер plpgsql генерация записи в колонку

подскажите пожалуйста, необходимо автоматически генерировать запись в колонку id_doc следующим форматом: Р XXXXXX XXX , где 2-7 символы - число, месяц, год текущей даты 8-10 - порядковый номер на текущую дату (т.е. 001, 002 и т.д.) При этом каждый день соответственно из-за смены даты, у нас запись должна меняться, как это можно реализовать? Весь вывод добавил, осталось только это реализовать (курсивом выделил какой кусок кода надо изменить):

-- Function: ins_n()

-- DROP FUNCTION ins_n();

CREATE OR REPLACE FUNCTION ins_n()
RETURNS trigger AS
$BODY$
BEGIN

--insert into out (
-- id_doc,с_pt,doc_creation_time,id,
-- name,number,
-- e,
-- start,end
--)
insert into out (
id_doc,c_pt,doc_creation_time,id,
e,
start,end
)
*select 'P'||substring(e.code from 2) as id_doc*,'1234' as c_pt,
now() as doc_creation_time,i.id as id,
f.e as e,
(f.dt_range).start as start,(f.dt_range).final as final
from fr a
left outer join m b on a.m_id=b.id
left outer join ta_an c on b.t_id=c.t_id
left outer join ta_pa e on b.t_id=e.id
left outer join res f on b.t_id=f.t_id
inner join s_con h on e.num=h.p_num[1]
inner join rks.p_ut i on i.id_in=h.plan_in_num and i.id_doc is not null
where a.id=NEW.id;

insert into out_p (
id_doc,
fr,ba,bad,
den,dec,ng,
mg,pl,
s,s_r,
m_t,e_c,
dn,m_d,
s_t
)
*select 'P'||substring(e.code from 2) as id_doc*,
(fr).fr as fr,(fr).ba as ba,(fr).bad as bad,
a.den as den, a.dec as dec, a.ng as ng,
a.mg as mg, a.pl as pl,
a.s as s, a.s_r as s_r,
a.m_t as m_t, a.e_c as e_c,
a.dn as dn, a.m_d as m_d,
a.s_t as s_t
from fr a
left outer join m b on a.m_id=b.id
left outer join ta_an c on b.t_id=c.t_id
left outer join ta_pa e on b.t_id=e.id
left outer join res f on b.t_id=f.t_id
inner join s_con h on e.num=h.p_num[1]
inner join p_ut i on i.id_in=h.p_num and i.id_doc is not null
where a.id=NEW.id;

RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION ins_n()
OWNER TO adm;
COMMENT ON FUNCTION ins_n() IS 'Тест';

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