PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

O operador de atribuição esquecido =e o lugar-comum :=


No analisador PL/PgSQL, o operador de atribuição é definido como
assign_operator : '='
                | COLON_EQUALS
                ;

Este é um recurso legado, presente no código-fonte desde 1998, quando foi introduzido - como podemos ver no repositório Git do PostgreSQL.

A partir da versão 9.4 está oficialmente documentado.

Essa idiossincrasia - de ter dois operadores para a mesma coisa - foi levantada na lista de usuários do pgsql, e algumas pessoas solicitaram que ela fosse removida, mas ainda é mantida no núcleo porque o corpus justo do código legado depende disso.

Veja esta mensagem de Tom Lane (desenvolvedor principal do Pg).

Então, respondendo diretamente às suas perguntas:

Não encontrei alguma seção nos documentos que mencionam e/ou explicam isso?

Você não o encontrou porque não estava documentado, o que foi corrigido a partir da versão 9.4.

Existem consequências conhecidas usando =em vez de :=.

Não há consequências colaterais do uso de = , mas você deve usar := para atribuição para tornar seu código mais legível e (como efeito colateral) mais compatível com PL/SQL.

Atualização:pode haver uma consequência lateral em cenários raros (veja a resposta de Erwin)

ATUALIZAÇÃO:resposta atualizada graças à contribuição de Daniel, Sandy e outros.