获取所有具有当前值的序列

Gam*_*mes 1 postgresql sequence postgresql-12

我有以下查询可以获取所有序列及其模式:

SELECT sequence_schema as schema, sequence_name as sequence
FROM information_schema.sequences
WHERE sequence_schema NOT IN ('topology', 'tiger')
ORDER BY 1, 2
Run Code Online (Sandbox Code Playgroud)

我想用类似的东西来获取每个序列名称的当前值select last_value from [sequence];。我尝试了以下(以及一些变体),但它不起作用,因为语法不正确:

DO $$
BEGIN
    EXECUTE 
        sequence_schema as schema,
        sequence_name as sequence,
        last_value
    FROM information_schema.sequences
    LEFT JOIN (
        EXECUTE 'SELECT last_value FROM ' || schema || '.' || sequence
    ) tmp
    ORDER BY 1, 2;
END
$$;
Run Code Online (Sandbox Code Playgroud)

我找到了一些解决方案,可以创建函数来执行文本或将函数内的查询拼凑在一起并返回结果,但我更喜欢有一个可以运行和修改的查询,但我喜欢。

a_h*_*ame 5

在 Postgres 12 中,您可以使用pg_sequences

select schemaname as schema, 
       sequencename as sequence, 
       last_value
from pg_sequences
Run Code Online (Sandbox Code Playgroud)