Untitled
unknown
pgsql
10 months ago
2.1 kB
15
Indexable
DO
$$
DECLARE
hall_id UUID := '06e1e862-dbae-4a99-9fea-6b8f682ad572'::UUID; --ID холла
start_date DATE := '2024-07-30'; -- Для записей с какой даты будет подмена
end_date DATE := '2024-10-01'; -- Для записей до какой даты будет подмена
new_start_date DATE := '2024-10-22'; -- Для записей до какой даты будет подмена
new_end_date DATE := '2025-01-22'; -- Для записей до какой даты будет подмена
limit_count INT := 500; -- Сколько записей для временного диапазона будет использовано для подмены
table_name TEXT;
tables TEXT[] := ARRAY [
'cpa_affiliate_transaction',
'rakeback_affiliate_transaction',
'rev_share_affiliate_transaction'
]; -- Список таблиц для подмены
BEGIN
FOREACH table_name IN ARRAY tables
LOOP
EXECUTE format('WITH cte AS (
SELECT id
FROM %I
WHERE hall_id = $1
AND created_at >= $2
AND created_at <= $3
ORDER BY created_at DESC
LIMIT $6
)
UPDATE %I
SET created_at = $4::date +
((RANDOM() * ($5::date - $4::date)) || '' days'')::interval,
updated_at = $4::date +
((RANDOM() * ($5::date - $4::date)) || '' days'')::interval
WHERE id IN (SELECT id FROM cte)', table_name, table_name)
USING hall_id, start_date, end_date, new_start_date, new_end_date, limit_count;
END LOOP;
END
$$;Editor is loading...
Leave a Comment