Untitled

 avatar
unknown
sql
a month ago
1.9 kB
14
Indexable
DO
$$
    DECLARE
        start_date  DATE   := '2024-01-09'; -- Для записей с какой даты будет подмена
        end_date    DATE   := '2024-01-11'; -- Для записей до какой даты будет подмена
        limit_count INT    := 100; -- Сколько записей для временного диапазона будет использовано для подмены
        table_name  TEXT;
        hall_id     UUID   := '0466b1b1-7467-447a-a60c-36e383f4641f'::UUID; --ID холла
        tables      TEXT[] := ARRAY [
            'common_referrals_transaction',
            'cpa_referrals_transaction',
            'rev_share_referrals_transaction',
            'rakeback_referrals_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 id DESC
                                LIMIT $4
                            )
                            UPDATE %I
                            SET created_at = ''2024-10-01''::date +
                                             ((RANDOM() * (''2024-10-31''::date - ''2024-10-01''::date)) || '' days'')::interval,
                                updated_at = ''2024-10-01''::date +
                                             ((RANDOM() * (''2024-10-31''::date - ''2024-10-01''::date)) || '' days'')::interval
                            WHERE id IN (SELECT id FROM cte)', table_name, table_name)
                    USING hall_id, start_date, end_date, limit_count;
            END LOOP;
    END
$$;
Leave a Comment