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

Perché un identificatore in CREATE TABLE è tra virgolette doppie, ma non gli altri?

Secondo il manuale , position è

È una parola riservata nell'SQL standard. Quello che vedi è probabilmente l'output di pgAdmin o qualche altro client che virgolette tutte le parole riservate nello standard SQL quando viene utilizzato come identificatore.

Questa affermazione è sintatticamente corretta:

SELECT position FROM author LIMIT 1;

puoi identificatori sempre con virgolette doppie (preservando così l'ortografia mista). Funziona anche questo:

SELECT "position" FROM author LIMIT 1;

Ma qui sono necessarie virgolette doppie:

SELECT "where" FROM author LIMIT 1;
SELECT "CaMeL" FROM author LIMIT 1;
SELECT "a-b-c" FROM author LIMIT 1;