/
telnov.ob
/
postgresql-patterns-library
Обзор
Документация
Войти
/
telnov.ob
/
postgresql-patterns-library
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
functions/exec.sql
29 строк
844 B
Rinat
Update exec.sql
26 фев 2026, 00:12
Не верифицирован
26 фев 2026, 00:12
012df13
Код
Авторство
О чём код?
-- source: https://www.crunchydata.com/blog/dynamic-ddl-in-postgresql /* -- Problem: ALTER SEQUENCE big_table_id_seq RESTART (SELECT max(id) + 1 FROM big_table); ERROR: syntax error at or near "(", at character 41 STATEMENT: ALTER SEQUENCE big_table_id_seq RESTART (SELECT max(id) + 1 FROM big_table); -- Solution 1 with psql: -- use \gset to set a psql variable with the results of this query SELECT max(id) + 1 as big_table_max from big_table \gset -- substitute the variable in a new query ALTER SEQUENCE big_table_id_seq RESTART :big_table_max ; */ -- Solution 2 without psql: CREATE OR REPLACE FUNCTION exec(raw_query text) RETURNS text AS $$ BEGIN EXECUTE raw_query; RETURN raw_query; END $$ LANGUAGE plpgsql; -- TEST -- SELECT exec(format('ALTER SEQUENCE big_table_id_seq RESTART %s', (SELECT max(id) + 1 FROM big_table)));