sql >> Databasteknik >  >> RDS >> PostgreSQL

Den bortglömda uppdragsoperatören =och det vanliga :=

I PL/PgSQL-parser definieras tilldelningsoperator som

assign_operator : '='
                | COLON_EQUALS
                ;

Detta är en äldre funktion, som finns i källkoden sedan 1998, när den introducerades - som vi kan se i PostgreSQL Git-repo.

Från och med version 9.4 är det officiellt dokumenterat.

Den här egenheten - att ha två operatorer för samma sak - togs upp på pgsql-användarlistan, och en del personer begärde att den skulle tas bort, men den hålls fortfarande kvar i kärnan eftersom rättvis korpus av äldre kod är beroende av den.

Se detta meddelande från Tom Lane (core Pg-utvecklare).

Så för att svara rakt på dina frågor:

Hittade jag inte något avsnitt i dokumenten som nämner och/eller förklarar detta?

Du hittade den inte eftersom den var odokumenterad, vilket är fixat från och med version 9.4.

Finns det några kända konsekvenser med =istället för :=.

Det finns inga sidokonsekvenser av att använda = , men du bör använda := för uppdrag för att göra din kod mer läsbar och (som en bieffekt) mer kompatibel med PL/SQL.

Uppdatering:det kan finnas en sidokonsekvens i sällsynta scenarier (se Erwins svar)

UPPDATERING:svaret uppdaterat tack vare input från Daniel, Sandy och andra.



  1. SQL Server konverterar varbinary till sträng

  2. Hur rengör (förhindrar SQL-injektion) dynamisk SQL i SQL Server?

  3. Heroku Postgres:För många kontakter. Hur dödar jag dessa anslutningar?

  4. Bygga en mycket tillgänglig databas för Moodle med PostgreSQL