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

Escaping von schlüsselwortartigen Spaltennamen in Postgres

Einfach year einschließen in doppelte Anführungszeichen, damit es nicht als Schlüsselwort interpretiert wird:

INSERT INTO table (id, name, "year") VALUES ( ... );

Aus der Dokumentation:

Es gibt eine zweite Art von Bezeichnern:den begrenzten Bezeichner oder den in Anführungszeichen gesetzten Bezeichner. Es wird gebildet, indem eine willkürliche Folge von Zeichen in doppelte Anführungszeichen eingeschlossen wird ("). Ein begrenzter Bezeichner ist immer ein Bezeichner, niemals ein Schlüsselwort. So könnte "select" verwendet werden, um auf eine Spalte oder Tabelle mit dem Namen "select" zu verweisen, während ein nicht in Anführungszeichen gesetzter select würde als Schlüsselwort verwendet werden und würde daher einen Parse-Fehler provozieren, wenn es dort verwendet wird, wo ein Tabellen- oder Spaltenname erwartet wird.