Использование цикла в PostgreSQL с выводом в консоль

Небольшая заметка на полях на будущее. Иногда в PostgreSQL нужно выполнить ряд повторяющихся действий с выводом результатов в лог. Одним примером покажу, как это сделать легко и просто.

-- Делаем вывод сообщений в лог видимым
SET client_min_messages TO notice;

CREATE TEMP TABLE tmp(id SERIAL, name TEXT);

-- Анонимный блок DO
DO $$
BEGIN
    -- Цикл LOOP
    LOOP
        INSERT INTO tmp(name) VALUES(gen_random_uuid()::TEXT);
        -- Условный оператор IF
        IF (SELECT MAX(id) FROM tmp) > 100 THEN
            RAISE NOTICE 'max id == %', (SELECT COUNT(*) FROM tmp);
            EXIT;
        END IF;
    END LOOP;
END $$;
Дата публикации: 2019-08-15
Теги: postgresql