PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Der vergessene Zuweisungsoperator =und das Alltägliche :=

Im PL/PgSQL-Parser ist der Zuweisungsoperator als

definiert
assign_operator : '='
                | COLON_EQUALS
                ;

Dies ist ein Legacy-Feature, das seit seiner Einführung im Jahr 1998 im Quellcode vorhanden ist – wie wir im PostgreSQL-Git-Repo sehen können.

Ab Version 9.4 ist es offiziell dokumentiert.

Diese Eigenart - zwei Operatoren für dasselbe zu haben - wurde auf der pgsql-Benutzerliste angesprochen, und einige Leute forderten, sie zu entfernen, aber sie wird immer noch im Kern beibehalten, weil ein fairer Korpus von Legacy-Code darauf angewiesen ist.

Siehe diese Nachricht von Tom Lane (Kern-Pg-Entwickler).

Um Ihre Fragen direkt zu beantworten:

Habe ich in den Dokumenten keinen Abschnitt gefunden, der dies erwähnt und/oder erklärt?

Sie haben es nicht gefunden, weil es undokumentiert war, was ab Version 9.4 behoben ist.

Gibt es bekannte Konsequenzen bei Verwendung von =anstelle von :=.

Die Verwendung von = hat keine Nebenwirkungen , aber Sie sollten := verwenden für die Zuweisung, um Ihren Code lesbarer und (als Nebeneffekt) kompatibler mit PL/SQL zu machen.

Update:In seltenen Fällen kann es zu einer Nebenkonsequenz kommen (siehe Erwins Antwort)

UPDATE:Antwort aktualisiert dank Beiträgen von Daniel, Sandy und anderen.