Eu tenho um tipo jsonb chamado attr field que contém o seguinte:
{
"pid": 1,
"name": "john",
"is_default": true
}
como alterar is_default para false?
Eu tento correr abaixo, mas sem sorte.
update attr set attr ->> 'is_default' = false where sales_type = 2
Existem duas maneiras de fazer isso:
Simplesmente concatenando o novo par chave/valor:
Isso funciona porque ao concatenar dois
jsonb
valores, as chaves existentes serão substituídas.A outra maneira é usar
jsonb_set()
que atualiza um valor em um local especificado por meio de um "caminho" (que é definido pelos elementos de um array)Com a próxima versão 14 (a ser lançada no quarto trimestre de 2021), você poderá simplificar isso para: