Напиши функцию, которая обновляет version_actual_period_start с типом timestamp. нужную дату указывает пользователь. а у предыдущей по времени актуальности записи обновляется дversion_actual_period_end становится такая же , но на 1 секунду меньше. Входные параметры время, наименование таблицы в БД, массив version_meta_id. Plpgsql
CREATE OR REPLACE FUNCTION update_version_actual_period( IN new_date timestamp, IN tablename text, IN version_meta_ids smallint[] ) RETURNS void LANGUAGE 'plpgsql' AS $BODY$ BEGIN UPDATE tablename SET version_actual_period_end = new_date - interval '1 second' WHERE version_meta_id = ANY(version_meta_ids); INSERT INTO tablename VALUES ( ANY(version_meta_ids), new_date, 'infinity' ); END; $BODY$;