Se la colonna nella tabella di Postgres ha il nome year
, come dovrebbe essere la INSERT
query per impostare il valore per quella colonna?
Ad esempio: INSERT INTO table (id, name, year) VALUES ( ... );
dà un errore vicino alla parola dell'anno .
Se la colonna nella tabella di Postgres ha il nome year
, come dovrebbe essere la INSERT
query per impostare il valore per quella colonna?
Ad esempio: INSERT INTO table (id, name, year) VALUES ( ... );
dà un errore vicino alla parola dell'anno .
Risposte:
Basta racchiuderlo year
tra virgolette doppie per impedire che venga interpretato come una parola chiave :
INSERT INTO table (id, name, "year") VALUES ( ... );
Dalla documentazione :
Esiste un secondo tipo di identificatore: l'identificatore delimitato o l'identificatore citato. È formato racchiudendo una sequenza arbitraria di caratteri tra virgolette ("). Un identificatore delimitato è sempre un identificatore, mai una parola chiave. Quindi" select "può essere utilizzato per fare riferimento a una colonna o una tabella denominata" select ", mentre una selezione non quotata verrebbe presa come parola chiave e provocherebbe quindi un errore di analisi se usata laddove è previsto un nome di tabella o colonna.
update "user" set "password" = 'value...';
funziona perfettamente bene ...
Se non fornisci le virgolette in nessun campo / colonna, per impostazione predefinita sarà minuscolo da Postgres. E Postgres salterà il controllo della parola chiave quando si tratta del nome della colonna.
Nel tuo caso, non credo sia obbligatorio aggiungere citazioni quando si tratta di columns
. Ma se si utilizza keywords
(registrato da Postgres) come nome di Table
, Schema
, Function
o Trigger
ecc, è necessario disporre di utilizzare le virgolette, oppure è possibile specificare il nome schema con dot concatenazione.
Supponiamo che ordine sia la parola chiave registrata da Postgres. E in alcuni scenari, è necessario utilizzare questa parola chiave come nome di tabella.
In quel momento, Postgres ti permetterà di creare una tabella con keywords
. Questa è la bellezza di Postgres.
Per accedere alla tabella degli ordini, è necessario utilizzare un preventivo doppio oppure è possibile inserire il nome dello schema prima del nome della tabella.
PER ESEMPIO
1.
select * from schema_name.order;
2.
select * from "order";
Allo stesso modo, puoi usare questo tipo di combinazione. Spero che questo ti possa aiutare.
MyTable
,myTable
Emytable
sono lo stesso. Con le virgolette questa piegatura non è fatta. Quindi"MyTable"
non è più lo stesso dimytable
.