Created
July 4, 2024 09:35
-
-
Save FromSi/e5210a5048bc84d74a7cf5164a750d49 to your computer and use it in GitHub Desktop.
Update All Sequences In PostgreSQL
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
with sequences as ( | |
select * | |
from ( | |
select table_schema, | |
table_name, | |
column_name, | |
replace(replace(replace(column_default, '::regclass)', ''), '''', ''), 'nextval(', 'public.') as col_sequence | |
from information_schema.columns | |
where table_schema not in ('pg_catalog', 'information_schema') and column_default ILIKE 'nextval(%' | |
) t | |
where col_sequence is not null | |
), maxvals as ( | |
select table_schema, table_name, column_name, col_sequence, | |
(xpath('/row/max/text()', | |
query_to_xml(format('select max(%I) from %I.%I', column_name, table_schema, table_name), true, true, '')) | |
)[1]::text::bigint as max_val | |
from sequences | |
) | |
select table_schema, | |
table_name, | |
column_name, | |
col_sequence, | |
coalesce(max_val, 0) as max_val, | |
setval(col_sequence, coalesce(max_val, 1)) --<< this will change the sequence | |
from maxvals; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment