SQLize Online / PHPize Online  /  SQLtest Online

A A A
Share      Blog   Popular
Copy Format Clear
CREATE TABLE transactions ( id BIGSERIAL PRIMARY KEY, tg_id bigint NOT NULL, created_at timestamp(0) NOT NULL DEFAULT now() ); INSERT INTO transactions (tg_id) VALUES (1); ALTER TABLE transactions ADD COLUMN date DATE; ALTER TABLE transactions ALTER COLUMN date SET DEFAULT CURRENT_DATE; INSERT INTO transactions (tg_id) VALUES (2); DECLARE rec RECORD; BEGIN -- Создаем временную таблицу один раз CREATE TEMPORARY TABLE temp_update (id BIGINT); LOOP -- Очистить временную таблицу перед загрузкой новых данных TRUNCATE temp_update; -- Заполняем временную таблицу идентификаторами строк, которые нужно обновить INSERT INTO temp_update (id) SELECT id FROM transactions WHERE date IS NULL LIMIT 10000; -- Если нет строк для обновления, завершаем цикл IF NOT EXISTS (SELECT 1 FROM temp_update) THEN EXIT; END IF; -- Обновляем строки в основной таблице на основе данных из временной таблицы UPDATE transactions SET date = DATE(created_at) WHERE id IN (SELECT id FROM temp_update); -- Пауза для снижения нагрузки на сервер PERFORM pg_sleep(1); END LOOP; END $$;

Stuck with a problem? Got Error? Ask ChatGPT!

Copy Clear