Eu tenho um tipo enumerado Postgres usado para descrever a classe de nó (sensível à ordem) de uma tabela de relacionamento de origem/destino. A questão é: como posso buscar dinamicamente o próximo valor (se houver) de uma instância de enumeração?
CREATE TYPE MyEnum AS ENUM ('level1', 'level2', 'level3');
SELECT dst_type, dst_id
FROM my_relationships
WHERE src_type::MyEnum = next(dst_type::MyEnum) -- does not work
-- WHERE src_type::MyEnum = dst_type::MyEnum + 1 -- does not work
AND src_id = 'd4fc1d5d-b054-d37c-4e80-2c04a6b3dbf8';
Eu não acho que haja nada embutido, mas você pode escrever uma função para fazer isso:
Então isso deve funcionar:
Exemplo on-line