PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Por que um identificador em um CREATE TABLE está entre aspas duplas, mas não os outros?


De acordo com o manual , position é

É uma palavra reservada no SQL padrão. O que você vê é provavelmente a saída de pgAdmin ou algum outro cliente que coloca aspas duplas em todas as palavras reservadas no padrão SQL quando usadas como identificadores.

Esta afirmação está sintaticamente correta:
SELECT position FROM author LIMIT 1;

Você pode sempre identificadores de aspas duplas (preservando assim a grafia de maiúsculas e minúsculas). Isso também funciona:
SELECT "position" FROM author LIMIT 1;

Mas aspas duplas são necessárias aqui:
SELECT "where" FROM author LIMIT 1;
SELECT "CaMeL" FROM author LIMIT 1;
SELECT "a-b-c" FROM author LIMIT 1;