PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

L'operatore di assegnazione dimenticato =e il luogo comune :=

Nel parser PL/PgSQL, l'operatore di assegnazione è definito come

assign_operator : '='
                | COLON_EQUALS
                ;

Questa è una funzionalità legacy, presente nel codice sorgente dal 1998, quando è stata introdotta, come possiamo vedere nel repository Git di PostgreSQL.

A partire dalla versione 9.4 è ufficialmente documentato.

Questa idiosincrasia - di avere due operatori per la stessa cosa - è stata sollevata nell'elenco degli utenti di pgsql e alcune persone ne hanno chiesto la rimozione, ma è ancora mantenuta nel nucleo perché il corpus corretto del codice legacy si basa su di esso.

Vedi questo messaggio di Tom Lane (sviluppatore principale di Pg).

Quindi, per rispondere direttamente alle tue domande:

Non ho trovato qualche sezione nei documenti che menziona e/o spiega questo?

Non l'hai trovato perché non era documentato, il che è stato corretto a partire dalla versione 9.4.

Ci sono conseguenze note usando =invece di :=.

Non ci sono conseguenze collaterali dell'utilizzo di = , ma dovresti usare := per l'assegnazione per rendere il codice più leggibile e (come effetto collaterale) più compatibile con PL/SQL.

Aggiornamento:potrebbe esserci una conseguenza collaterale in rari scenari (vedi risposta di Erwin)

AGGIORNAMENTO:risposta aggiornata grazie al contributo di Daniel, Sandy e altri.