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

Den glemte opgaveoperatør =og det almindelige :=

I PL/PgSQL-parser er tildelingsoperator defineret som

assign_operator : '='
                | COLON_EQUALS
                ;

Dette er en ældre funktion, der er til stede i kildekoden siden 1998, da den blev introduceret - som vi kan se i PostgreSQL Git-repoen.

Fra version 9.4 er det officielt dokumenteret.

Denne idiosynkrasi - med at have to operatører til det samme - blev rejst på pgsql-brugerlisten, og nogle mennesker anmodede om, at den blev fjernet, men den er stadig bevaret i kernen, fordi retfærdig korpus af ældre kode er afhængig af det.

Se denne besked fra Tom Lane (kerne Pg-udvikler).

Så for at besvare dine spørgsmål lige:

Fandt jeg ikke et afsnit i dokumenterne, som nævner og/eller forklarer dette?

Du fandt det ikke, fordi det var udokumenteret, hvilket er rettet fra version 9.4.

Er der nogen kendte konsekvenser ved at bruge =i stedet for :=.

Der er ingen bivirkninger ved at bruge = , men du skal bruge := til opgave for at gøre din kode mere læsbar og (som en bivirkning) mere kompatibel med PL/SQL.

Opdatering:der kan være en sidekonsekvens i sjældne scenarier (se Erwins svar)

OPDATERING:Svar opdateret takket være input fra Daniel, Sandy og andre.



  1. SQLite COUNT

  2. Log registreringsændringer i SQL-server i en revisionstabel

  3. Kom godt i gang med PostgreSQL 11 på Ubuntu 18.04

  4. Er OraOLEDB-udbyder i .NET upålidelig på CLOB-felter?