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)
我找到了一些解决方案,可以创建函数来执行文本或将函数内的查询拼凑在一起并返回结果,但我更喜欢有一个可以运行和修改的查询,但我喜欢。
在 Postgres 12 中,您可以使用pg_sequences:
select schemaname as schema,
sequencename as sequence,
last_value
from pg_sequences
Run Code Online (Sandbox Code Playgroud)