我有以下查询语句,它可以获取所有序列及其模式:
SELECT sequence_schema as schema, sequence_name as sequence
FROM information_schema.sequences
WHERE sequence_schema NOT IN ('topology', 'tiger')
ORDER BY 1, 2
我想通过类似 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
$$;
我发现了一些解决方案,它们创建函数来执行文本或在函数内部拼接查询并返回结果,但我更喜欢有一个单独的查询语句,可以根据需要运行和修改。