27 lines
817 B
Cheetah
27 lines
817 B
Cheetah
DO {{dollar_delimiter}}
|
|
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 = {{quote .SequenceName}}
|
|
AND n.nspname = {{quote .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({{quote (qual_table .SchemaName .SequenceName)}}::regclass, m_cnt, false);
|
|
END IF;
|
|
END IF;
|
|
END;
|
|
{{dollar_delimiter}}; |