sql >> Base de Datos >  >> RDS >> PostgreSQL

El operador de asignación olvidado =y el lugar común :=

En el analizador PL/PgSQL, el operador de asignación se define como

assign_operator : '='
                | COLON_EQUALS
                ;

Esta es una función heredada, presente en el código fuente desde 1998, cuando se introdujo, como podemos ver en el repositorio Git de PostgreSQL.

A partir de la versión 9.4 está oficialmente documentado.

Esta idiosincrasia, de tener dos operadores para lo mismo, se planteó en la lista de usuarios de pgsql, y algunas personas solicitaron que se eliminara, pero aún se mantiene en el núcleo porque el corpus justo del código heredado se basa en él.

Vea este mensaje de Tom Lane (desarrollador principal de Pg).

Entonces, para responder a sus preguntas directamente:

¿No encontré alguna sección en los documentos que menciona y/o explica esto?

No lo encontraste porque no estaba documentado, lo cual se solucionó a partir de la versión 9.4.

¿Hay alguna consecuencia conocida usando =en lugar de :=.

No hay consecuencias secundarias por usar = , pero deberías usar := para la asignación para que su código sea más legible y (como efecto secundario) más compatible con PL/SQL.

Actualización:puede haber una consecuencia secundaria en escenarios raros (ver la respuesta de Erwin)

ACTUALIZACIÓN:respuesta actualizada gracias a los aportes de Daniel, Sandy y otros.