Напиши функцию, которая обновляет version_actual_period_start с типом timestamp. Запись искать с условием version_actual_period_end > current_timestamp . нужную дату указывает пользователь, а у предыдущей, по времени актуальности записи, обновляется version_actual_period_end-становится такая же , но на 1 секунду меньше. Входные параметры время, наименование таблицы в БД, массив version_meta_id. Plpgsql
CREATE OR REPLACE FUNCTION public.upd_version_actual_period_start( p_date_start timestamp, p_table_name text, p_version_meta_ids integer[]) RETURNS void LANGUAGE 'plpgsql' VOLATILE COST 100 ROWS 1000 AS $BODY$ BEGIN FOR i IN 1..p_version_meta_ids[array_upper(p_version_meta_ids,1)] LOOP EXECUTE 'UPDATE ' || p_table_name || ' SET version_actual_period_start = ' || quote_literal(p_date_start) || ' WHERE version_actual_period_end > current_timestamp AND version_meta_id = ' || p_version_meta_ids[i] || ';'; EXECUTE 'UPDATE ' || p_table_name || ' SET version_actual_period_end = ' || quote_literal(p_date_start + interval '1' second) ||