DO $$ DECLARE m_cnt bigint; m_next bigint; BEGIN IF EXISTS ( SELECT 1 FROM pg_class c INNER JOIN pg_namespace n ON n.oid = c.relnamespace WHERE c.relname = '{{.SequenceName}}' AND n.nspname = '{{.SchemaName}}' AND c.relkind = 'S' ) THEN SELECT COALESCE(MAX({{quote_ident .ColumnName}}), 0) + 1 FROM {{qual_table .SchemaName .TableName}} INTO m_cnt; SELECT CASE WHEN is_called THEN last_value + 1 ELSE last_value END FROM {{qual_table .SchemaName .SequenceName}} INTO m_next; -- Only move the sequence forward; never rewind one that is already past the data. IF m_cnt > m_next THEN PERFORM setval('{{qual_table_raw .SchemaName .SequenceName}}'::regclass, m_cnt, false); END IF; END IF; END; $$;