PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

L'opérateur d'affectation oublié =et le lieu commun :=

Dans l'analyseur PL/PgSQL, l'opérateur d'affectation est défini comme

assign_operator : '='
                | COLON_EQUALS
                ;

Il s'agit d'une fonctionnalité héritée, présente dans le code source depuis 1998, date à laquelle elle a été introduite - comme nous pouvons le voir dans le dépôt PostgreSQL Git.

À partir de la version 9.4, il est officiellement documenté.

Cette idiosyncrasie - d'avoir deux opérateurs pour la même chose - a été soulevée sur la liste des utilisateurs de pgsql, et certaines personnes ont demandé qu'elle soit supprimée, mais elle est toujours conservée dans le noyau car un corpus équitable de code hérité en dépend.

Voir ce message de Tom Lane (développeur principal de Pg).

Donc, pour répondre directement à vos questions :

N'ai-je pas trouvé une section dans la documentation qui mentionne et/ou explique cela ?

Vous ne l'avez pas trouvé car il n'était pas documenté, ce qui est corrigé à partir de la version 9.4.

Y a-t-il des conséquences connues en utilisant =au lieu de :=.

Il n'y a aucune conséquence secondaire à l'utilisation de = , mais vous devez utiliser  := pour l'affectation afin de rendre votre code plus lisible et (comme effet secondaire) plus compatible avec PL/SQL.

Mise à jour :il peut y avoir une conséquence secondaire dans de rares scénarios (voir la réponse d'Erwin)

MISE À JOUR :réponse mise à jour grâce aux contributions de Daniel, Sandy et d'autres.